From 3282992221f905ef912e86d48c5302fdf1f56bef Mon Sep 17 00:00:00 2001 From: David Perez Date: Thu, 14 Aug 2025 09:06:19 -0500 Subject: [PATCH] PM-24727: Update VaultUnlockScreen to use user specific environment (#5690) --- .../vaultunlock/VaultUnlockViewModel.kt | 12 +---------- .../vaultunlock/VaultUnlockViewModelTest.kt | 20 ------------------- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModel.kt index 1c127278e1..f0f4af298f 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModel.kt @@ -25,7 +25,6 @@ import com.x8bit.bitwarden.data.platform.manager.model.SpecialCircumstance import com.x8bit.bitwarden.data.platform.manager.util.toCreateCredentialRequestOrNull import com.x8bit.bitwarden.data.platform.manager.util.toFido2AssertionRequestOrNull import com.x8bit.bitwarden.data.platform.manager.util.toGetCredentialsRequestOrNull -import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository import com.x8bit.bitwarden.data.vault.manager.VaultLockManager import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.data.vault.repository.model.VaultUnlockResult @@ -61,7 +60,6 @@ class VaultUnlockViewModel @Inject constructor( private val bitwardenCredentialManager: BitwardenCredentialManager, private val appResumeManager: AppResumeManager, private val vaultLockManager: VaultLockManager, - environmentRepo: EnvironmentRepository, savedStateHandle: SavedStateHandle, ) : BaseViewModel( // We load the state from the savedStateHandle for testing purposes. @@ -96,7 +94,7 @@ class VaultUnlockViewModel @Inject constructor( initials = activeAccountSummary.initials, email = activeAccountSummary.email, dialog = null, - environmentUrl = environmentRepo.environment.label, + environmentUrl = activeAccount.environment.label, input = "", isBiometricEnabled = activeAccount.isBiometricsEnabled, isBiometricsValid = isBiometricsValid, @@ -113,14 +111,6 @@ class VaultUnlockViewModel @Inject constructor( }, ) { init { - environmentRepo - .environmentStateFlow - .onEach { environment -> - mutableStateFlow.update { - it.copy(environmentUrl = environment.label) - } - } - .launchIn(viewModelScope) authRepository .userStateFlow .onEach { diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt index bc033b8751..c0868a1cee 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/vaultunlock/VaultUnlockViewModelTest.kt @@ -3,7 +3,6 @@ package com.x8bit.bitwarden.ui.auth.feature.vaultunlock import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow -import com.bitwarden.data.datasource.disk.model.EnvironmentUrlDataJson import com.bitwarden.data.repository.model.Environment import com.bitwarden.ui.platform.base.BaseViewModelTest import com.bitwarden.ui.platform.resource.BitwardenString @@ -22,8 +21,6 @@ import com.x8bit.bitwarden.data.platform.manager.BiometricsEncryptionManager import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager import com.x8bit.bitwarden.data.platform.manager.model.FirstTimeState import com.x8bit.bitwarden.data.platform.manager.model.SpecialCircumstance -import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository -import com.x8bit.bitwarden.data.platform.repository.util.FakeEnvironmentRepository import com.x8bit.bitwarden.data.vault.manager.VaultLockManager import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.data.vault.repository.model.VaultUnlockResult @@ -55,7 +52,6 @@ import javax.crypto.Cipher class VaultUnlockViewModelTest : BaseViewModelTest() { private val mutableUserStateFlow = MutableStateFlow(DEFAULT_USER_STATE) - private val environmentRepository = FakeEnvironmentRepository() private val authRepository = mockk { every { activeUserId } answers { mutableUserStateFlow.value?.activeUserId } every { userStateFlow } returns mutableUserStateFlow @@ -198,19 +194,6 @@ class VaultUnlockViewModelTest : BaseViewModelTest() { } } - @Test - fun `environment url should update when environment repo emits an update`() { - val viewModel = createViewModel() - assertEquals(DEFAULT_STATE, viewModel.stateFlow.value) - environmentRepository.environment = Environment.SelfHosted( - environmentUrlData = EnvironmentUrlDataJson(base = "https://vault.qa.bitwarden.pw"), - ) - assertEquals( - DEFAULT_STATE.copy(environmentUrl = "vault.qa.bitwarden.pw"), - viewModel.stateFlow.value, - ) - } - @Test fun `showAccountMenu should be true when unlockType is not STANDARD`() { val viewModel = createViewModel(unlockType = UnlockType.TDE) @@ -1352,11 +1335,9 @@ class VaultUnlockViewModelTest : BaseViewModelTest() { } } - @Suppress("LongParameterList") private fun createViewModel( state: VaultUnlockState? = null, unlockType: UnlockType = UnlockType.STANDARD, - environmentRepo: EnvironmentRepository = environmentRepository, vaultRepo: VaultRepository = vaultRepository, biometricsEncryptionManager: BiometricsEncryptionManager = encryptionManager, lockManager: VaultLockManager = vaultLockManager, @@ -1367,7 +1348,6 @@ class VaultUnlockViewModelTest : BaseViewModelTest() { }, authRepository = authRepository, vaultRepo = vaultRepo, - environmentRepo = environmentRepo, biometricsEncryptionManager = biometricsEncryptionManager, bitwardenCredentialManager = bitwardenCredentialManager, specialCircumstanceManager = specialCircumstanceManager,