Updated on 2026-08-14

This commit is contained in:
Tangem 2023-06-09 09:44:31 +03:00
parent ce77351fa8
commit 044b794535
7 changed files with 24 additions and 22 deletions

View file

@ -19,11 +19,7 @@ import com.tangem.tap.features.walletSelector.ui.model.WarningModel
import com.tangem.tap.store
import com.tangem.tap.userWalletsListManager
import com.tangem.tap.walletStoresManager
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.flow.*
import org.rekotlin.StoreSubscriber
internal class WalletSelectorViewModel : ViewModel(), StoreSubscriber<WalletSelectorState> {
@ -200,8 +196,7 @@ internal class WalletSelectorViewModel : ViewModel(), StoreSubscriber<WalletSele
onDismiss = this::dismissWarningDialog,
)
is UserWalletsListError.BiometricsAuthenticationDisabled -> WarningModel.BiometricsDisabledWarning(
onConfirm = this::clearUserWallets,
onDismiss = this::dismissWarningDialog,
onDismiss = this::clearUserWallets,
)
else -> currentDialog
}

View file

@ -17,9 +17,10 @@ internal fun BiometricsDisabledWarningContent(warning: WarningModel.BiometricsDi
title = stringResource(id = R.string.common_warning),
message = stringResource(id = R.string.biometric_unavailable_warning),
onDismissDialog = warning.onDismiss,
isDismissable = false,
confirmButton = DialogButton(
title = stringResource(id = R.string.common_ok),
onClick = warning.onConfirm,
onClick = warning.onDismiss,
),
)
}
@ -30,7 +31,6 @@ private fun BiometricsDisabledWarningContentSample(modifier: Modifier = Modifier
Column(modifier = modifier) {
BiometricsDisabledWarningContent(
warning = WarningModel.BiometricsDisabledWarning(
onConfirm = {},
onDismiss = {},
),
)

View file

@ -24,7 +24,6 @@ internal sealed interface WarningModel : DialogModel {
) : WarningModel
data class BiometricsDisabledWarning(
val onConfirm: () -> Unit,
val onDismiss: () -> Unit,
) : WarningModel
}

View file

@ -72,8 +72,7 @@ internal class WelcomeViewModel : ViewModel(), StoreSubscriber<WelcomeState> {
onDismiss = this::dismissWarning,
)
is UserWalletsListError.BiometricsAuthenticationDisabled -> WarningModel.BiometricsDisabledWarning(
onConfirm = this::clearUserWallets,
onDismiss = this::dismissWarning,
onDismiss = this::clearUserWallets,
)
else -> null
}

View file

@ -48,9 +48,10 @@ internal fun WarningDialog(warning: WarningModel?) {
title = stringResource(id = R.string.common_warning),
message = stringResource(id = R.string.biometric_unavailable_warning),
onDismissDialog = warning.onDismiss,
isDismissable = false,
confirmButton = DialogButton(
title = stringResource(id = R.string.common_ok),
onClick = warning.onConfirm,
onClick = warning.onDismiss,
),
)
}
@ -140,7 +141,7 @@ private fun KeyInvalidatedWarningPreview_Dark() {
@Composable
private fun BiometricDisabledWarningSample(modifier: Modifier = Modifier) {
Column(modifier = modifier) {
WarningDialog(warning = WarningModel.BiometricsDisabledWarning(onConfirm = {}, onDismiss = {}))
WarningDialog(warning = WarningModel.BiometricsDisabledWarning(onDismiss = {}))
}
}

View file

@ -11,7 +11,6 @@ internal sealed interface WarningModel {
) : WarningModel
data class BiometricsDisabledWarning(
val onConfirm: () -> Unit,
val onDismiss: () -> Unit,
) : WarningModel
}

View file

@ -1,12 +1,7 @@
package com.tangem.core.ui.components
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.*
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@ -15,6 +10,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import com.tangem.core.ui.R
import com.tangem.core.ui.res.TangemTheme
@ -52,6 +48,7 @@ data class AdditionalTextInputDialogParams(
* @param confirmButton title and action for confirm button
* @param dismissButton title and action for dismiss button (no dismiss button if null)
* @param onDismissDialog action to perform when dialog is closed
* @param isDismissable If false then dialog can not be dismissed by back button click or by outside click
*
* @see <a href = "https://www.figma.com/file/14ISV23YB1yVW1uNVwqrKv/Android?node-id=48%3A30&t=izDPAJnDbJTTC0Fp-1"
* >Figma component</a>
@ -63,6 +60,7 @@ fun BasicDialog(
onDismissDialog: () -> Unit,
title: String? = null,
dismissButton: DialogButton? = null,
isDismissable: Boolean = true,
) {
TangemDialog(
type = DialogType.Message(message),
@ -70,6 +68,10 @@ fun BasicDialog(
onDismissDialog = onDismissDialog,
title = title,
dismissButton = dismissButton,
properties = DialogProperties(
dismissOnBackPress = isDismissable,
dismissOnClickOutside = isDismissable,
),
)
}
@ -94,6 +96,7 @@ fun SimpleOkDialog(message: String, onDismissDialog: () -> Unit) {
* @param dismissButton title and action for dismiss button (no dismiss button if null)
* @param onDismissDialog action to perform when dialog is closed
* @param textFieldParams Additional params for dialog text field
* @param isDismissable If false then dialog can not be dismissed by back button click or by outside click
*
* @see <a href = "https://www.figma.com/file/14ISV23YB1yVW1uNVwqrKv/Android?node-id=268%3A273&t=9uHKoudX78ySqium-4"
* >Figma component</a>
@ -107,6 +110,7 @@ fun TextInputDialog(
textFieldParams: AdditionalTextInputDialogParams,
title: String? = null,
dismissButton: DialogButton? = null,
isDismissable: Boolean = true,
) {
TangemDialog(
type = DialogType.TextInput(
@ -118,6 +122,10 @@ fun TextInputDialog(
onDismissDialog = onDismissDialog,
title = title,
dismissButton = dismissButton,
properties = DialogProperties(
dismissOnBackPress = isDismissable,
dismissOnClickOutside = isDismissable,
),
)
}
@ -129,8 +137,9 @@ private fun TangemDialog(
onDismissDialog: () -> Unit,
title: String? = null,
dismissButton: DialogButton? = null,
properties: DialogProperties = DialogProperties(),
) {
Dialog(onDismissRequest = onDismissDialog) {
Dialog(properties = properties, onDismissRequest = onDismissDialog) {
Column(
modifier = Modifier
.background(