@@ -163,11 +163,56 @@ export class Pam {
163163 }
164164
165165 static async userLogin ( loginId : string ) {
166- return Pam . shared ?. userLogin ( loginId ) ;
166+ const deviceToken =
167+ await Pam . _instance . storage ?. getLocalStorage ( 'deviceToken' ) ;
168+ const mediaKey =
169+ await Pam . _instance . storage ?. getLocalStorage ( 'push_media_key' ) ;
170+ if ( mediaKey ) {
171+ let payload : Record < string , any > = { _delete_media : mediaKey } ;
172+ await Pam . shared ?. track ( 'delete_media' , payload ) ;
173+ }
174+ const loginResp = await Pam . shared ?. userLogin ( loginId ) ;
175+ if ( deviceToken ) {
176+ await Pam . updatePushNotificationToken ( deviceToken ) ;
177+ }
178+
179+ return loginResp ;
167180 }
168181
169182 static async userLogout ( ) {
170- return Pam . shared ?. userLogout ( ) ;
183+ const deviceToken =
184+ await Pam . _instance . storage ?. getLocalStorage ( 'deviceToken' ) ;
185+ const mediaKey =
186+ await Pam . _instance . storage ?. getLocalStorage ( 'push_media_key' ) ;
187+ if ( mediaKey ) {
188+ let payload : Record < string , any > = { _delete_media : mediaKey } ;
189+ await Pam . shared ?. track ( 'delete_media' , payload ) ;
190+ }
191+
192+ const logoutResp = await Pam . shared ?. userLogout ( ) ;
193+
194+ if ( deviceToken ) {
195+ await Pam . updatePushNotificationToken ( deviceToken ) ;
196+ }
197+ return logoutResp ;
198+ }
199+
200+ static updatePushNotificationToken ( deviceToken : string ) {
201+ let mediaKey = '' ;
202+ if ( Platform . OS === 'ios' ) {
203+ if ( __DEV__ ) {
204+ deviceToken = `_${ deviceToken } ` ;
205+ }
206+ mediaKey = 'ios_notification' ;
207+ } else {
208+ mediaKey = 'android_notification' ;
209+ }
210+ let payload : Record < string , any > = { } ;
211+ payload [ mediaKey ] = deviceToken ;
212+
213+ Pam . shared ?. track ( 'save_push' , payload ) ;
214+ Pam . _instance . storage ?. setLocalStorage ( 'deviceToken' , deviceToken ) ;
215+ Pam . _instance . storage ?. setLocalStorage ( 'push_media_key' , mediaKey ) ;
171216 }
172217
173218 static async loadConsentStatus ( consentMessageId : string ) {
0 commit comments