@@ -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' ;
1718import {
@@ -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.
5762let 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