Skip to content

Commit 19df3db

Browse files
committed
Don't fire JWT invalid listeners multiple times
* Use a string constant `OS_JWT_TOKEN_INVALID` for a jwt token when we internally invalidated it, instead of setting to `nil`. * OSIdentityModelRepo will not notify user manager when a token has been set to `OS_JWT_TOKEN_INVALID`. The user manager will already be notified of invalidation by executors.
1 parent d579f06 commit 19df3db

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OSIdentityModelRepo.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ extension OSIdentityModelRepo: OSModelChangedHandler {
9797
args.property == OS_JWT_BEARER_TOKEN,
9898
let model = args.model as? OSIdentityModel,
9999
let externalId = model.externalId,
100-
let token = args.newValue as? String
100+
let token = args.newValue as? String,
101+
token != OS_JWT_TOKEN_INVALID // Don't notify when token is invalidated internally
101102
else {
102103
return
103104
}

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OneSignalUserManagerImpl.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,13 @@ extension OneSignalUserManagerImpl {
681681
OneSignalLog.onesignalLog(.LL_ERROR, message: "Unable to find identity model for externalId: \(externalId)")
682682
return
683683
}
684-
identityModel.jwtBearerToken = nil
684+
685+
// Return, if the token has already been invalidated
686+
guard identityModel.jwtBearerToken != OS_JWT_TOKEN_INVALID else {
687+
return
688+
}
689+
690+
identityModel.jwtBearerToken = OS_JWT_TOKEN_INVALID
685691

686692
fireJwtExpired(externalId: externalId)
687693
}

0 commit comments

Comments
 (0)