diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreen.kt index f06debb421..0608556548 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreen.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreen.kt @@ -62,10 +62,12 @@ fun AboutScreen( intentManager: IntentManager = LocalIntentManager.current, ) { val state by viewModel.stateFlow.collectAsStateWithLifecycle() - val context = LocalContext.current - val resources = context.resources EventsEffect(viewModel = viewModel) { event -> when (event) { + is AboutEvent.NavigateToWebVault -> { + intentManager.launchUri(event.vaultUrl.toUri()) + } + AboutEvent.NavigateBack -> onNavigateBack.invoke() AboutEvent.NavigateToHelpCenter -> { @@ -76,10 +78,6 @@ fun AboutScreen( intentManager.launchUri("https://bitwarden.com/help/about-organizations".toUri()) } - AboutEvent.NavigateToWebVault -> { - intentManager.launchUri("https://vault.bitwarden.com".toUri()) - } - AboutEvent.NavigateToRateApp -> { intentManager.launchUri( uri = @@ -181,7 +179,7 @@ private fun ContentColumn( BitwardenExternalLinkRow( text = stringResource(id = R.string.learn_org), onConfirmClick = onLearnAboutOrgsClick, - dialogTitle = stringResource(id = R.string.continue_to_web_app), + dialogTitle = stringResource(id = R.string.continue_to_x, "bitwarden.com"), dialogMessage = stringResource( id = R.string.learn_about_organizations_description_long, ), diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModel.kt index 835e270deb..161a199248 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModel.kt @@ -7,7 +7,8 @@ import com.x8bit.bitwarden.BuildConfig import com.x8bit.bitwarden.R import com.x8bit.bitwarden.data.platform.manager.CrashLogsManager import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardManager -import com.x8bit.bitwarden.data.platform.repository.SettingsRepository +import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository +import com.x8bit.bitwarden.data.platform.repository.util.baseWebVaultUrlOrDefault import com.x8bit.bitwarden.data.platform.util.isFdroid import com.x8bit.bitwarden.ui.platform.base.BaseViewModel import com.x8bit.bitwarden.ui.platform.base.util.Text @@ -32,8 +33,8 @@ class AboutViewModel @Inject constructor( private val savedStateHandle: SavedStateHandle, private val clipboardManager: BitwardenClipboardManager, private val clock: Clock, - private val settingsRepository: SettingsRepository, private val crashLogsManager: CrashLogsManager, + private val environmentRepository: EnvironmentRepository, ) : BaseViewModel( initialState = savedStateHandle[KEY_STATE] ?: createInitialState( clock = clock, @@ -86,7 +87,11 @@ class AboutViewModel @Inject constructor( } private fun handleWebVaultClick() { - sendEvent(AboutEvent.NavigateToWebVault) + sendEvent( + AboutEvent.NavigateToWebVault( + environmentRepository.environment.environmentUrlData.baseWebVaultUrlOrDefault, + ), + ) } companion object { @@ -142,7 +147,7 @@ sealed class AboutEvent { /** * Navigates to the web vault. */ - data object NavigateToWebVault : AboutEvent() + data class NavigateToWebVault(val vaultUrl: String) : AboutEvent() /** * Navigates to rate the app. diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreenTest.kt index e53f17b441..01d914d79b 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreenTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutScreenTest.kt @@ -144,9 +144,10 @@ class AboutScreenTest : BaseComposeTest() { @Test fun `on NavigateToWebVault should call launchUri on IntentManager`() { - mutableEventFlow.tryEmit(AboutEvent.NavigateToWebVault) + val testUrl = "www.testUrl.com" + mutableEventFlow.tryEmit(AboutEvent.NavigateToWebVault(testUrl)) verify { - intentManager.launchUri("https://vault.bitwarden.com".toUri()) + intentManager.launchUri(testUrl.toUri()) } } diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModelTest.kt index ad9ffdb248..21193c47dc 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/about/AboutViewModelTest.kt @@ -5,7 +5,8 @@ import app.cash.turbine.test import com.x8bit.bitwarden.BuildConfig import com.x8bit.bitwarden.data.platform.manager.CrashLogsManager import com.x8bit.bitwarden.data.platform.manager.clipboard.BitwardenClipboardManager -import com.x8bit.bitwarden.data.platform.repository.SettingsRepository +import com.x8bit.bitwarden.data.platform.repository.util.FakeEnvironmentRepository +import com.x8bit.bitwarden.data.platform.repository.util.baseWebVaultUrlOrDefault import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest import com.x8bit.bitwarden.ui.platform.base.util.asText import com.x8bit.bitwarden.ui.platform.base.util.concat @@ -27,8 +28,8 @@ import java.time.ZoneId class AboutViewModelTest : BaseViewModelTest() { + private val environmentRepository = FakeEnvironmentRepository() private val clipboardManager: BitwardenClipboardManager = mockk() - private val settingsRepository: SettingsRepository = mockk() private val crashLogsManager: CrashLogsManager = mockk { every { isEnabled } returns false every { isEnabled = any() } just runs @@ -115,7 +116,15 @@ class AboutViewModelTest : BaseViewModelTest() { val viewModel = createViewModel(DEFAULT_ABOUT_STATE) viewModel.eventFlow.test { viewModel.trySendAction(AboutAction.WebVaultClick) - assertEquals(AboutEvent.NavigateToWebVault, awaitItem()) + assertEquals( + AboutEvent.NavigateToWebVault( + vaultUrl = environmentRepository + .environment + .environmentUrlData + .baseWebVaultUrlOrDefault, + ), + awaitItem(), + ) } } @@ -125,7 +134,7 @@ class AboutViewModelTest : BaseViewModelTest() { savedStateHandle = SavedStateHandle().apply { set("state", state) }, clipboardManager = clipboardManager, clock = fixedClock, - settingsRepository = settingsRepository, + environmentRepository = environmentRepository, crashLogsManager = crashLogsManager, ) }