Skip to content

Commit ad2b83a

Browse files
committed
Encapsulate JWT invalidation listener management in UserManager
Add addJwtInvalidatedListener, removeJwtInvalidatedListener, and fireJwtInvalidated methods to UserManager. Callers no longer need to cast IUserManager to UserManager to access the notifier directly. Register UserManager as a concrete DI service so IdentityVerificationService can depend on it directly. Made-with: Cursor
1 parent c0bde45 commit ad2b83a

File tree

4 files changed

+21
-10
lines changed

4 files changed

+21
-10
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/config/impl/IdentityVerificationService.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.onesignal.core.internal.config.impl
22

3-
import com.onesignal.UserJwtInvalidatedEvent
43
import com.onesignal.common.modeling.ISingletonModelStoreChangeHandler
54
import com.onesignal.common.modeling.ModelChangeTags
65
import com.onesignal.common.modeling.ModelChangedArgs
@@ -9,7 +8,6 @@ import com.onesignal.core.internal.config.ConfigModelStore
98
import com.onesignal.core.internal.operations.IOperationRepo
109
import com.onesignal.core.internal.startup.IStartableService
1110
import com.onesignal.debug.internal.logging.Logging
12-
import com.onesignal.user.IUserManager
1311
import com.onesignal.user.internal.UserManager
1412
import com.onesignal.user.internal.identity.IdentityModelStore
1513
import com.onesignal.user.internal.identity.JwtTokenStore
@@ -27,7 +25,7 @@ internal class IdentityVerificationService(
2725
private val _operationRepo: IOperationRepo,
2826
private val _identityModelStore: IdentityModelStore,
2927
private val _jwtTokenStore: JwtTokenStore,
30-
private val _userManager: IUserManager,
28+
private val _userManager: UserManager,
3129
) : IStartableService, ISingletonModelStoreChangeHandler<ConfigModel> {
3230
override fun start() {
3331
_configModelStore.subscribe(this)
@@ -48,9 +46,7 @@ internal class IdentityVerificationService(
4846
val externalId = _identityModelStore.model.externalId
4947
if (externalId != null && _jwtTokenStore.getJwt(externalId) == null) {
5048
Logging.debug("IdentityVerificationService: IV enabled but no JWT for $externalId, firing invalidated event")
51-
(_userManager as UserManager).jwtInvalidatedNotifier.fireOnMain {
52-
it.onUserJwtInvalidated(UserJwtInvalidatedEvent(externalId))
53-
}
49+
_userManager.fireJwtInvalidated(externalId)
5450
}
5551
}
5652

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/internal/OneSignalImp.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,11 +425,11 @@ internal class OneSignalImp(
425425
}
426426

427427
override fun addUserJwtInvalidatedListener(listener: IUserJwtInvalidatedListener) {
428-
(services.getService<IUserManager>() as UserManager).jwtInvalidatedNotifier.subscribe(listener)
428+
services.getService<UserManager>().addJwtInvalidatedListener(listener)
429429
}
430430

431431
override fun removeUserJwtInvalidatedListener(listener: IUserJwtInvalidatedListener) {
432-
(services.getService<IUserManager>() as UserManager).jwtInvalidatedNotifier.unsubscribe(listener)
432+
services.getService<UserManager>().removeJwtInvalidatedListener(listener)
433433
}
434434

435435
override fun <T> hasService(c: Class<T>): Boolean = services.hasService(c)

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/UserModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ internal class UserModule : IModule {
7575
builder.register<LoginUserOperationExecutor>().provides<IOperationExecutor>()
7676
builder.register<LoginUserFromSubscriptionOperationExecutor>().provides<IOperationExecutor>()
7777
builder.register<RefreshUserOperationExecutor>().provides<IOperationExecutor>()
78-
builder.register<UserManager>().provides<IUserManager>()
78+
builder.register<UserManager>().provides<IUserManager>().provides<UserManager>()
7979
builder.register<CustomEventController>().provides<ICustomEventController>()
8080
builder.register<CustomEventOperationExecutor>().provides<IOperationExecutor>()
8181
builder.register<CustomEventBackendService>().provides<ICustomEventBackendService>()

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/UserManager.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.onesignal.common.IDManager
44
import com.onesignal.common.JSONUtils
55
import com.onesignal.common.OneSignalUtils
66
import com.onesignal.IUserJwtInvalidatedListener
7+
import com.onesignal.UserJwtInvalidatedEvent
78
import com.onesignal.common.events.EventProducer
89
import com.onesignal.common.modeling.ISingletonModelStoreChangeHandler
910
import com.onesignal.common.modeling.ModelChangedArgs
@@ -44,7 +45,21 @@ internal open class UserManager(
4445
get() = _subscriptionManager.subscriptions
4546

4647
val changeHandlersNotifier = EventProducer<IUserStateObserver>()
47-
val jwtInvalidatedNotifier = EventProducer<IUserJwtInvalidatedListener>()
48+
private val jwtInvalidatedNotifier = EventProducer<IUserJwtInvalidatedListener>()
49+
50+
fun addJwtInvalidatedListener(listener: IUserJwtInvalidatedListener) {
51+
jwtInvalidatedNotifier.subscribe(listener)
52+
}
53+
54+
fun removeJwtInvalidatedListener(listener: IUserJwtInvalidatedListener) {
55+
jwtInvalidatedNotifier.unsubscribe(listener)
56+
}
57+
58+
fun fireJwtInvalidated(externalId: String) {
59+
jwtInvalidatedNotifier.fireOnMain {
60+
it.onUserJwtInvalidated(UserJwtInvalidatedEvent(externalId))
61+
}
62+
}
4863

4964
override val pushSubscription: IPushSubscription
5065
get() = _subscriptionManager.subscriptions.push

0 commit comments

Comments
 (0)