Skip to content

Commit eb4de36

Browse files
committed
Add JWT and event listener to wrapper
- Token added as parameter to login - updateUserJwt - UserJwtInvalidatedEvent - Add & Remove Listener methods
1 parent 0fa9e05 commit eb4de36

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

src/events/EventManager.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
IN_APP_MESSAGE_WILL_DISMISS,
1616
IN_APP_MESSAGE_DID_DISMISS,
1717
IN_APP_MESSAGE_DID_DISPLAY,
18+
USER_JWT_INVALIDATED,
1819
} from './events';
1920
import OSNotification from '../OSNotification';
2021

@@ -29,6 +30,7 @@ const eventList = [
2930
IN_APP_MESSAGE_WILL_DISMISS,
3031
IN_APP_MESSAGE_DID_DISMISS,
3132
IN_APP_MESSAGE_DID_DISPLAY,
33+
USER_JWT_INVALIDATED,
3234
];
3335

3436
export default class EventManager {

src/events/events.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ export const IN_APP_MESSAGE_DID_DISMISS = 'OneSignal-inAppMessageDidDismiss';
99
export const PERMISSION_CHANGED = 'OneSignal-permissionChanged';
1010
export const SUBSCRIPTION_CHANGED = 'OneSignal-subscriptionChanged';
1111
export const USER_STATE_CHANGED = 'OneSignal-userStateChanged';
12+
export const USER_JWT_INVALIDATED = 'OneSignal-userJwtInvalidated';

src/index.ts

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
NOTIFICATION_WILL_DISPLAY,
1313
PERMISSION_CHANGED,
1414
SUBSCRIPTION_CHANGED,
15+
USER_JWT_INVALIDATED,
1516
USER_STATE_CHANGED,
1617
} from './events/events';
1718
import {
@@ -53,6 +54,10 @@ export enum LogLevel {
5354
Verbose,
5455
}
5556

57+
export interface UserJwtInvalidatedEvent {
58+
externalId?: string;
59+
}
60+
5661
// Internal wrapper notification permission state that is being updated by the permission change handler.
5762
let notificationPermission = false;
5863

@@ -99,10 +104,10 @@ export namespace OneSignal {
99104
* If your integration is user-centric, or you want the ability to identify the user beyond the current device, the
100105
* login method should be called to identify the user.
101106
*/
102-
export function login(externalId: string) {
107+
export function login(externalId: string, jwtToken: string) {
103108
if (!isNativeModuleLoaded(RNOneSignal)) return;
104109

105-
RNOneSignal.login(externalId);
110+
RNOneSignal.login(externalId, jwtToken);
106111
}
107112

108113
/**
@@ -115,6 +120,40 @@ export namespace OneSignal {
115120
RNOneSignal.logout();
116121
}
117122

123+
/**
124+
* Update the JWT token for a user.
125+
*/
126+
export function updateUserJwt(externalId: string, jwtToken: string) {
127+
if (!isNativeModuleLoaded(RNOneSignal)) return;
128+
129+
RNOneSignal.updateUserJwt(externalId, jwtToken);
130+
}
131+
132+
/** Add a callback that fires when the user's JWT is invalidated. */
133+
export function addEventListener(
134+
event: 'userJwtInvalidated',
135+
listener: (event: UserJwtInvalidatedEvent) => void,
136+
) {
137+
if (!isNativeModuleLoaded(RNOneSignal)) return;
138+
139+
isValidCallback(listener);
140+
RNOneSignal.addUserJwtInvalidatedListener();
141+
eventManager.addEventListener<UserJwtInvalidatedEvent>(
142+
USER_JWT_INVALIDATED,
143+
listener,
144+
);
145+
}
146+
147+
/** Clears current UserJwtInvalidated listeners. */
148+
export function removeEventListener(
149+
event: 'userJwtInvalidated',
150+
listener: (event: UserJwtInvalidatedEvent) => void,
151+
) {
152+
if (!isNativeModuleLoaded(RNOneSignal)) return;
153+
154+
eventManager.removeEventListener(USER_JWT_INVALIDATED, listener);
155+
}
156+
118157
/** For GDPR users, your application should call this method before setting the App ID. */
119158
export function setConsentRequired(required: boolean) {
120159
if (!isNativeModuleLoaded(RNOneSignal)) return;

0 commit comments

Comments
 (0)