Do not fail un-registration if Firebase token is not known. Fixes #2895

This commit is contained in:
Benoit Marty
2024-05-23 09:51:56 +02:00
parent 3cae2c05c4
commit 16b04afa1f
2 changed files with 7 additions and 11 deletions

View File

@@ -64,14 +64,13 @@ class FirebasePushProvider @Inject constructor(
override suspend fun getCurrentDistributor(matrixClient: MatrixClient) = firebaseDistributor
override suspend fun unregister(matrixClient: MatrixClient): Result<Unit> {
val pushKey = firebaseStore.getFcmToken() ?: return Result.failure<Unit>(
IllegalStateException(
"Unable to unregister pusher, Firebase token is not known."
)
).also {
val pushKey = firebaseStore.getFcmToken()
return if (pushKey == null) {
Timber.tag(loggerTag.value).w("Unable to unregister pusher, Firebase token is not known.")
Result.success(Unit)
} else {
pusherSubscriber.unregisterPusher(matrixClient, pushKey, FirebaseConfig.PUSHER_HTTP_URL)
}
return pusherSubscriber.unregisterPusher(matrixClient, pushKey, FirebaseConfig.PUSHER_HTTP_URL)
}
override suspend fun getCurrentUserPushConfig(): CurrentUserPushConfig? {

View File

@@ -134,17 +134,14 @@ class FirebasePushProviderTest {
}
@Test
fun `unregister ko no token`() = runTest {
fun `unregister no token - in this case, the error is ignored`() = runTest {
val firebasePushProvider = createFirebasePushProvider(
firebaseStore = InMemoryFirebaseStore(
token = null
),
pusherSubscriber = FakePusherSubscriber(
unregisterPusherResult = { _, _, _ -> Result.success(Unit) }
)
)
val result = firebasePushProvider.unregister(FakeMatrixClient())
assertThat(result.isFailure).isTrue()
assertThat(result.isSuccess).isTrue()
}
@Test