Add email navigation param and environment repo to the TrustedDeviceViewModel (#1146)

This commit is contained in:
David Perez
2024-03-14 15:44:33 -05:00
committed by Álison Fernandes
parent 888e079f09
commit 058c4f0dfc
3 changed files with 41 additions and 8 deletions

View File

@@ -1,11 +1,27 @@
package com.x8bit.bitwarden.ui.auth.feature.trusteddevice
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.NavType
import androidx.navigation.navArgument
import com.x8bit.bitwarden.data.platform.annotation.OmitFromCoverage
import com.x8bit.bitwarden.ui.platform.base.util.composableWithSlideTransitions
private const val TRUSTED_DEVICE_ROUTE: String = "trusted_device"
private const val EMAIL_ADDRESS: String = "email_address"
private const val TRUSTED_DEVICE_PREFIX: String = "trusted_device"
private const val TRUSTED_DEVICE_ROUTE: String = "$TRUSTED_DEVICE_PREFIX/{${EMAIL_ADDRESS}}"
/**
* Class to retrieve trusted device arguments from the [SavedStateHandle].
*/
@OmitFromCoverage
data class TrustedDeviceArgs(val emailAddress: String) {
constructor(savedStateHandle: SavedStateHandle) : this(
emailAddress = checkNotNull(savedStateHandle.get<String>(EMAIL_ADDRESS)),
)
}
/**
* Add the Trusted Device Screen to the nav graph.
@@ -15,6 +31,9 @@ fun NavGraphBuilder.trustedDeviceDestination(
) {
composableWithSlideTransitions(
route = TRUSTED_DEVICE_ROUTE,
arguments = listOf(
navArgument(EMAIL_ADDRESS) { type = NavType.StringType },
),
) {
TrustedDeviceScreen(
onNavigateBack = onNavigateBack,
@@ -25,6 +44,9 @@ fun NavGraphBuilder.trustedDeviceDestination(
/**
* Navigate to the Trusted Device Screen.
*/
fun NavController.navigateToTrustedDevice(navOptions: NavOptions? = null) {
this.navigate(TRUSTED_DEVICE_ROUTE, navOptions)
fun NavController.navigateToTrustedDevice(
emailAddress: String,
navOptions: NavOptions? = null,
) {
this.navigate("$TRUSTED_DEVICE_PREFIX/$emailAddress", navOptions)
}

View File

@@ -2,6 +2,7 @@ package com.x8bit.bitwarden.ui.auth.feature.trusteddevice
import android.os.Parcelable
import androidx.lifecycle.SavedStateHandle
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
import com.x8bit.bitwarden.ui.platform.base.BaseViewModel
import com.x8bit.bitwarden.ui.platform.base.util.Text
import com.x8bit.bitwarden.ui.platform.base.util.asText
@@ -18,11 +19,12 @@ private const val KEY_STATE = "state"
@HiltViewModel
class TrustedDeviceViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
environmentRepository: EnvironmentRepository,
) : BaseViewModel<TrustedDeviceState, TrustedDeviceEvent, TrustedDeviceAction>(
initialState = savedStateHandle[KEY_STATE]
?: TrustedDeviceState(
emailAddress = "",
environmentLabel = "",
emailAddress = TrustedDeviceArgs(savedStateHandle).emailAddress,
environmentLabel = environmentRepository.environment.label,
isRemembered = false,
),
) {