Merge pull request #43 from garfiec/fix/stop-double-logout
fix(settings): stop double-invoking authRepository.logout on logout/delete
This commit is contained in:
commit
47b3cb1e96
2 changed files with 6 additions and 17 deletions
|
|
@ -23,7 +23,6 @@ import com.garfiec.librechat.feature.settings.util.PlatformCacheCleaner
|
||||||
import com.garfiec.librechat.feature.settings.viewmodel.delegate.SpeechSettingsContract
|
import com.garfiec.librechat.feature.settings.viewmodel.delegate.SpeechSettingsContract
|
||||||
import com.garfiec.librechat.feature.settings.viewmodel.delegate.SpeechSettingsFactory
|
import com.garfiec.librechat.feature.settings.viewmodel.delegate.SpeechSettingsFactory
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.mockk.Ordering
|
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.coVerify
|
import io.mockk.coVerify
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
|
|
@ -158,23 +157,20 @@ class SettingsViewModelTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `logout calls authRepository and sets isLoggedOut`() = runTest {
|
fun `logout sets isLoggedOut flag without calling authRepository`() = runTest {
|
||||||
coEvery { authRepository.logout() } returns Result.Success(Unit)
|
|
||||||
|
|
||||||
viewModel = createViewModel()
|
viewModel = createViewModel()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
|
|
||||||
viewModel.logout()
|
viewModel.logout()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
|
|
||||||
coVerify { authRepository.logout() }
|
coVerify(exactly = 0) { authRepository.logout() }
|
||||||
assertThat(viewModel.uiState.value.isLoggedOut).isTrue()
|
assertThat(viewModel.uiState.value.isLoggedOut).isTrue()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `deleteAccount calls userRepository then authRepository`() = runTest {
|
fun `deleteAccount calls userRepository and sets isAccountDeleted without calling authRepository`() = runTest {
|
||||||
coEvery { userRepository.deleteUser() } returns Result.Success(Unit)
|
coEvery { userRepository.deleteUser() } returns Result.Success(Unit)
|
||||||
coEvery { authRepository.logout() } returns Result.Success(Unit)
|
|
||||||
|
|
||||||
viewModel = createViewModel()
|
viewModel = createViewModel()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
|
|
@ -182,10 +178,8 @@ class SettingsViewModelTest {
|
||||||
viewModel.deleteAccount()
|
viewModel.deleteAccount()
|
||||||
advanceUntilIdle()
|
advanceUntilIdle()
|
||||||
|
|
||||||
coVerify(ordering = Ordering.ORDERED) {
|
coVerify { userRepository.deleteUser() }
|
||||||
userRepository.deleteUser()
|
coVerify(exactly = 0) { authRepository.logout() }
|
||||||
authRepository.logout()
|
|
||||||
}
|
|
||||||
assertThat(viewModel.uiState.value.isAccountDeleted).isTrue()
|
assertThat(viewModel.uiState.value.isAccountDeleted).isTrue()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -585,11 +585,7 @@ class SettingsViewModel(
|
||||||
// ── Auth actions ───────────────────────────────────────────────
|
// ── Auth actions ───────────────────────────────────────────────
|
||||||
|
|
||||||
fun logout() {
|
fun logout() {
|
||||||
viewModelScope.launch {
|
_uiState.update { it.copy(isLoggedOut = true) }
|
||||||
_uiState.update { it.copy(isLoading = true) }
|
|
||||||
authRepository.logout()
|
|
||||||
_uiState.update { it.copy(isLoading = false, isLoggedOut = true) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteAccount(token: String? = null, backupCode: String? = null) {
|
fun deleteAccount(token: String? = null, backupCode: String? = null) {
|
||||||
|
|
@ -597,7 +593,6 @@ class SettingsViewModel(
|
||||||
_uiState.update { it.copy(isLoading = true) }
|
_uiState.update { it.copy(isLoading = true) }
|
||||||
when (val result = userRepository.deleteUser(token = token, backupCode = backupCode)) {
|
when (val result = userRepository.deleteUser(token = token, backupCode = backupCode)) {
|
||||||
is Result.Success -> {
|
is Result.Success -> {
|
||||||
authRepository.logout()
|
|
||||||
_uiState.update { it.copy(isLoading = false, isAccountDeleted = true, showDeleteAccountOtpDialog = false) }
|
_uiState.update { it.copy(isLoading = false, isAccountDeleted = true, showDeleteAccountOtpDialog = false) }
|
||||||
}
|
}
|
||||||
is Result.Error -> {
|
is Result.Error -> {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue