From bbdfec3a47c359e47b3f8e26b93136baa62f83f2 Mon Sep 17 00:00:00 2001 From: SessionHero01 <180888785+SessionHero01@users.noreply.github.com> Date: Wed, 12 Mar 2025 10:16:38 +1100 Subject: [PATCH] Add resetToken to TokenFetcher (#1009) * Add resetToken to TokenFetcher * Remove import --- .../securesms/notifications/HuaweiTokenFetcher.kt | 7 ++++++- .../org/thoughtcrime/securesms/ApplicationContext.java | 1 - .../org/thoughtcrime/securesms/util/ClearDataUtils.kt | 8 ++++---- .../securesms/notifications/FirebaseTokenFetcher.kt | 5 +++++ .../libsession/messaging/notifications/TokenFetcher.kt | 1 + 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/src/huawei/kotlin/org/thoughtcrime/securesms/notifications/HuaweiTokenFetcher.kt b/app/src/huawei/kotlin/org/thoughtcrime/securesms/notifications/HuaweiTokenFetcher.kt index 2c32cb5a29..1928e3f4d7 100644 --- a/app/src/huawei/kotlin/org/thoughtcrime/securesms/notifications/HuaweiTokenFetcher.kt +++ b/app/src/huawei/kotlin/org/thoughtcrime/securesms/notifications/HuaweiTokenFetcher.kt @@ -25,6 +25,12 @@ class HuaweiTokenFetcher @Inject constructor( this.token.value = token } + override suspend fun resetToken() { + withContext(Dispatchers.Default) { + HmsInstanceId.getInstance(context).deleteToken(APP_ID, TOKEN_SCOPE) + } + } + init { GlobalScope.launch { val instanceId = HmsInstanceId.getInstance(context) @@ -32,6 +38,5 @@ class HuaweiTokenFetcher @Inject constructor( instanceId.getToken(APP_ID, TOKEN_SCOPE) } } - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 31f7b5f1d8..c31a371ce9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -40,7 +40,6 @@ import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ProcessLifecycleOwner; import androidx.work.Configuration; -import com.google.firebase.messaging.FirebaseMessaging; import com.squareup.phrase.Phrase; import org.conscrypt.Conscrypt; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ClearDataUtils.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ClearDataUtils.kt index fb582a1089..5b68e11d6a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ClearDataUtils.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ClearDataUtils.kt @@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.util import android.annotation.SuppressLint import android.app.Application import android.content.Intent -import com.google.firebase.messaging.FirebaseMessaging import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.withContext @@ -15,11 +14,12 @@ import org.thoughtcrime.securesms.dependencies.ConfigFactory import org.thoughtcrime.securesms.home.HomeActivity import javax.inject.Inject import androidx.core.content.edit -import kotlinx.coroutines.tasks.await +import org.session.libsession.messaging.notifications.TokenFetcher class ClearDataUtils @Inject constructor( private val application: Application, private val configFactory: ConfigFactory, + private val tokenFetcher: TokenFetcher, ) { // Method to clear the local data - returns true on success otherwise false @SuppressLint("ApplySharedPref") @@ -36,9 +36,9 @@ class ClearDataUtils @Inject constructor( // The token deletion is nice but not critical, so don't let it block the rest of the process runCatching { - FirebaseMessaging.getInstance().deleteToken().await() + tokenFetcher.resetToken() }.onFailure { e -> - Log.w("ClearDataUtils", "Failed to delete Firebase token: ${e.message}", e) + Log.w("ClearDataUtils", "Failed to reset push notification token: ${e.message}", e) } } } diff --git a/app/src/play/kotlin/org/thoughtcrime/securesms/notifications/FirebaseTokenFetcher.kt b/app/src/play/kotlin/org/thoughtcrime/securesms/notifications/FirebaseTokenFetcher.kt index 2c4746bc2a..eac37db634 100644 --- a/app/src/play/kotlin/org/thoughtcrime/securesms/notifications/FirebaseTokenFetcher.kt +++ b/app/src/play/kotlin/org/thoughtcrime/securesms/notifications/FirebaseTokenFetcher.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.notifications import com.google.firebase.messaging.FirebaseMessaging import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.tasks.await import org.session.libsession.messaging.notifications.TokenFetcher import javax.inject.Inject import javax.inject.Singleton @@ -19,4 +20,8 @@ class FirebaseTokenFetcher @Inject constructor(): TokenFetcher { override fun onNewToken(token: String) { this.token.value = token } + + override suspend fun resetToken() { + FirebaseMessaging.getInstance().deleteToken().await() + } } \ No newline at end of file diff --git a/libsession/src/main/java/org/session/libsession/messaging/notifications/TokenFetcher.kt b/libsession/src/main/java/org/session/libsession/messaging/notifications/TokenFetcher.kt index 9a315e33fb..606e092020 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/notifications/TokenFetcher.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/notifications/TokenFetcher.kt @@ -12,4 +12,5 @@ interface TokenFetcher { val token: StateFlow fun onNewToken(token: String) + suspend fun resetToken() }