mirror of
https://github.com/bitwarden/android.git
synced 2026-06-06 14:28:45 -05:00
BIT-1277 BIT-1279: Confirmation dialog (#805)
This commit is contained in:
committed by
Álison Fernandes
parent
f023650730
commit
b991acd0d0
@@ -17,7 +17,9 @@ import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.ExperimentalComposeUiApi
|
||||
import androidx.compose.ui.Modifier
|
||||
@@ -40,6 +42,7 @@ import com.x8bit.bitwarden.ui.platform.components.BitwardenMultiSelectButton
|
||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenPasswordField
|
||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold
|
||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenTopAppBar
|
||||
import com.x8bit.bitwarden.ui.platform.components.BitwardenTwoButtonDialog
|
||||
import com.x8bit.bitwarden.ui.platform.components.LoadingDialogState
|
||||
import com.x8bit.bitwarden.ui.platform.feature.settings.exportvault.model.ExportVaultFormat
|
||||
import com.x8bit.bitwarden.ui.platform.util.displayLabel
|
||||
@@ -67,6 +70,29 @@ fun ExportVaultScreen(
|
||||
}
|
||||
}
|
||||
|
||||
var shouldShowConfirmationDialog by remember { mutableStateOf(false) }
|
||||
if (shouldShowConfirmationDialog) {
|
||||
BitwardenTwoButtonDialog(
|
||||
title = stringResource(id = R.string.export_vault_confirmation_title),
|
||||
message = if (state.exportFormat == ExportVaultFormat.JSON_ENCRYPTED) {
|
||||
stringResource(id = R.string.enc_export_key_warning)
|
||||
.plus("\n\n")
|
||||
.plus(stringResource(id = R.string.enc_export_account_warning))
|
||||
} else {
|
||||
stringResource(
|
||||
id = R.string.export_vault_warning,
|
||||
)
|
||||
},
|
||||
confirmButtonText = stringResource(id = R.string.export_vault),
|
||||
dismissButtonText = stringResource(id = R.string.cancel),
|
||||
onConfirmClick = remember(viewModel) {
|
||||
{ viewModel.trySendAction(ExportVaultAction.ConfirmExportVaultClicked) }
|
||||
},
|
||||
onDismissClick = { shouldShowConfirmationDialog = false },
|
||||
onDismissRequest = { shouldShowConfirmationDialog = false },
|
||||
)
|
||||
}
|
||||
|
||||
when (val dialog = state.dialogState) {
|
||||
is ExportVaultState.DialogState.Error -> {
|
||||
BitwardenBasicDialog(
|
||||
@@ -116,9 +142,7 @@ fun ExportVaultScreen(
|
||||
onPasswordInputChanged = remember(viewModel) {
|
||||
{ viewModel.trySendAction(ExportVaultAction.PasswordInputChanged(it)) }
|
||||
},
|
||||
onExportVaultClick = remember(viewModel) {
|
||||
{ viewModel.trySendAction(ExportVaultAction.ExportVaultClick) }
|
||||
},
|
||||
onExportVaultClick = { shouldShowConfirmationDialog = true },
|
||||
modifier = Modifier
|
||||
.padding(innerPadding)
|
||||
.fillMaxSize(),
|
||||
|
||||
@@ -40,9 +40,9 @@ class ExportVaultViewModel @Inject constructor(
|
||||
override fun handleAction(action: ExportVaultAction) {
|
||||
when (action) {
|
||||
ExportVaultAction.CloseButtonClick -> handleCloseButtonClicked()
|
||||
ExportVaultAction.ConfirmExportVaultClicked -> handleConfirmExportVaultClicked()
|
||||
ExportVaultAction.DialogDismiss -> handleDialogDismiss()
|
||||
is ExportVaultAction.ExportFormatOptionSelect -> handleExportFormatOptionSelect(action)
|
||||
ExportVaultAction.ExportVaultClick -> handleExportVaultClick()
|
||||
is ExportVaultAction.PasswordInputChanged -> handlePasswordInputChanged(action)
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,15 @@ class ExportVaultViewModel @Inject constructor(
|
||||
sendEvent(ExportVaultEvent.NavigateBack)
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify the master password after confirming exporting the vault.
|
||||
*/
|
||||
private fun handleConfirmExportVaultClicked() {
|
||||
// TODO: BIT-1273
|
||||
mutableStateFlow.update { it.copy(dialogState = null) }
|
||||
sendEvent(ExportVaultEvent.ShowToast("Coming soon to a PR near you!".asText()))
|
||||
}
|
||||
|
||||
/**
|
||||
* Dismiss the dialog.
|
||||
*/
|
||||
@@ -70,14 +79,6 @@ class ExportVaultViewModel @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the confirmation dialog and export the vault.
|
||||
*/
|
||||
private fun handleExportVaultClick() {
|
||||
// TODO: BIT-1273
|
||||
sendEvent(ExportVaultEvent.ShowToast(message = "Coming soon to an app near you!".asText()))
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the state with the new password input.
|
||||
*/
|
||||
@@ -145,6 +146,11 @@ sealed class ExportVaultAction {
|
||||
*/
|
||||
data object CloseButtonClick : ExportVaultAction()
|
||||
|
||||
/**
|
||||
* Indicates that the confirm export vault button was clicked.
|
||||
*/
|
||||
data object ConfirmExportVaultClicked : ExportVaultAction()
|
||||
|
||||
/**
|
||||
* Indicates that the dialog has been dismissed.
|
||||
*/
|
||||
@@ -155,11 +161,6 @@ sealed class ExportVaultAction {
|
||||
*/
|
||||
data class ExportFormatOptionSelect(val option: ExportVaultFormat) : ExportVaultAction()
|
||||
|
||||
/**
|
||||
* Indicates that the export vault button was clicked.
|
||||
*/
|
||||
data object ExportVaultClick : ExportVaultAction()
|
||||
|
||||
/**
|
||||
* Indicates that the password input has changed.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user