Skip to content

Commit 1e8d3f2

Browse files
nan-liclaude
andcommitted
fix(iv): gate jwt-invalidated listener add/remove on init
Match the init-readiness pattern used by updateUserJwt: when background threading is enabled, waitForInit; otherwise throw if not initialized. Without this, listeners added before initWithContext silently bind to a not-yet-wired UserManager. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 596d0b3 commit 1e8d3f2

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

  • OneSignalSDK/onesignal/core/src/main/java/com/onesignal/internal

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,10 +453,24 @@ internal class OneSignalImp(
453453
}
454454

455455
override fun addUserJwtInvalidatedListener(listener: IUserJwtInvalidatedListener) {
456+
if (isBackgroundThreadingEnabled) {
457+
waitForInit(operationName = "addUserJwtInvalidatedListener")
458+
} else {
459+
if (!isInitialized) {
460+
throw IllegalStateException("Must call 'initWithContext' before 'addUserJwtInvalidatedListener'")
461+
}
462+
}
456463
services.getService<UserManager>().addJwtInvalidatedListener(listener)
457464
}
458465

459466
override fun removeUserJwtInvalidatedListener(listener: IUserJwtInvalidatedListener) {
467+
if (isBackgroundThreadingEnabled) {
468+
waitForInit(operationName = "removeUserJwtInvalidatedListener")
469+
} else {
470+
if (!isInitialized) {
471+
throw IllegalStateException("Must call 'initWithContext' before 'removeUserJwtInvalidatedListener'")
472+
}
473+
}
460474
services.getService<UserManager>().removeJwtInvalidatedListener(listener)
461475
}
462476

0 commit comments

Comments
 (0)