From 81c656bb87052e2d902b3dbbd099f8207fe31da5 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Wed, 22 Nov 2023 13:11:15 +0200
Subject: [PATCH] Cancel refresh work on switch user session remove

---
 .../futo/circles/auth/feature/log_in/LogInViewModel.kt   | 9 ++++++---
 .../circles/auth/feature/token/RefreshTokenManager.kt    | 6 +++++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInViewModel.kt
index fe4aecd2c..9c50802a2 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInViewModel.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/log_in/LogInViewModel.kt
@@ -3,16 +3,18 @@ package org.futo.circles.auth.feature.log_in
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
-import org.futo.circles.core.extensions.Response
-import org.futo.circles.core.extensions.launchBg
 import org.futo.circles.auth.feature.log_in.switch_user.SwitchUserDataSource
+import org.futo.circles.auth.feature.token.RefreshTokenManager
 import org.futo.circles.core.base.SingleEventLiveData
+import org.futo.circles.core.extensions.Response
+import org.futo.circles.core.extensions.launchBg
 import javax.inject.Inject
 
 @HiltViewModel
 class LogInViewModel @Inject constructor(
     private val loginDataSource: LoginDataSource,
-    private val switchUserDataSource: SwitchUserDataSource
+    private val switchUserDataSource: SwitchUserDataSource,
+    private val refreshTokenManager: RefreshTokenManager
 ) : ViewModel() {
 
     val loginResultLiveData = SingleEventLiveData<Response<Unit>>()
@@ -28,6 +30,7 @@ class LogInViewModel @Inject constructor(
     fun removeSwitchUser(id: String) {
         launchBg {
             switchUserDataSource.removeSwitchUser(id)
+            refreshTokenManager.cancelTokenRefreshingById(id)
             switchUsersLiveData.postValue(switchUserDataSource.getSwitchUsersList())
         }
     }
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenManager.kt b/auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenManager.kt
index 743c4f6b9..ef14c6f28 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenManager.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/token/RefreshTokenManager.kt
@@ -51,7 +51,11 @@ class RefreshTokenManager @Inject constructor(
 
     fun cancelTokenRefreshing(session: Session) {
         val credentials = session.sessionParams.credentials
-        WorkManager.getInstance(context).cancelUniqueWork(credentials.sessionId())
+        cancelTokenRefreshingById(credentials.sessionId())
+    }
+
+    fun cancelTokenRefreshingById(credentialsSessionId: String) {
+        WorkManager.getInstance(context).cancelUniqueWork(credentialsSessionId)
     }
 
 }
\ No newline at end of file
-- 
GitLab