From 16b04afa1f72adf566d5e34ab47527dbb636f0c9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 23 May 2024 09:51:56 +0200 Subject: [PATCH] Do not fail un-registration if Firebase token is not known. Fixes #2895 --- .../pushproviders/firebase/FirebasePushProvider.kt | 11 +++++------ .../firebase/FirebasePushProviderTest.kt | 7 ++----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt index b88d70b157..0228f8f74b 100644 --- a/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt +++ b/libraries/pushproviders/firebase/src/main/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProvider.kt @@ -64,14 +64,13 @@ class FirebasePushProvider @Inject constructor( override suspend fun getCurrentDistributor(matrixClient: MatrixClient) = firebaseDistributor override suspend fun unregister(matrixClient: MatrixClient): Result { - val pushKey = firebaseStore.getFcmToken() ?: return Result.failure( - 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? { diff --git a/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt b/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt index 3c82682767..880be2f053 100644 --- a/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt +++ b/libraries/pushproviders/firebase/src/test/kotlin/io/element/android/libraries/pushproviders/firebase/FirebasePushProviderTest.kt @@ -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