Updated on 2026-08-14

This commit is contained in:
Tangem 2025-01-13 16:54:13 +04:00
commit 1785dcfda8
16 changed files with 141 additions and 345 deletions

View file

@ -1,9 +1,7 @@
package com.tangem.core.ui.message
import androidx.annotation.DrawableRes
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
import com.tangem.core.decompose.ui.UiMessage
import com.tangem.core.ui.R
import com.tangem.core.ui.extensions.TextReference
@ -57,22 +55,6 @@ data class SnackbarMessage(
}
}
/**
* Shows a [content] in the UI.
*
* @param content The content to show.
* */
data class ContentMessage(val content: Content) : EventMessage {
@Stable
fun interface Content {
@Suppress("ComposableFunctionName", "TopLevelComposableFunctions")
@Composable
operator fun invoke(onDismiss: () -> Unit)
}
}
/**
* Shows an alert dialog.
*

View file

@ -27,7 +27,6 @@ fun EventMessageEffect(
val messageEvent by messageHandler.collectAsState()
val context = LocalContext.current
var contentMessage: ContentMessage? by remember { mutableStateOf(value = null) }
var dialogMessage: DialogMessage? by remember { mutableStateOf(value = null) }
var bottomSheetMessage: BottomSheetMessage? by remember { mutableStateOf(value = null) }
@ -36,9 +35,6 @@ fun EventMessageEffect(
is SnackbarMessage -> {
onShowSnackbar(message, context)
}
is ContentMessage -> {
contentMessage = message
}
is DialogMessage -> {
dialogMessage = message
}
@ -48,10 +44,6 @@ fun EventMessageEffect(
}
}
contentMessage?.content?.invoke(
onDismiss = { contentMessage = null },
)
dialogMessage?.let { message ->
MessageDialog(
message = message,

View file

@ -11,9 +11,11 @@ import com.tangem.core.decompose.di.ComponentScoped
import com.tangem.core.decompose.navigation.Router
import com.tangem.core.decompose.navigation.popTo
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.ui.components.SimpleOkDialog
import com.tangem.core.ui.extensions.*
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.isNullOrEmpty
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.message.DialogMessage
import com.tangem.core.ui.message.SnackbarMessage
import com.tangem.domain.card.ScanCardProcessor
import com.tangem.domain.models.scan.ScanResponse
@ -101,12 +103,9 @@ internal class UserWalletSaver @Inject constructor(
private fun selectUserWallet() {
messageSender.send(
message = ContentMessage { onDismiss ->
SimpleOkDialog(
message = stringResourceSafe(id = R.string.user_wallet_list_error_wallet_already_saved),
onDismissDialog = onDismiss,
)
},
message = DialogMessage(
message = resourceReference(R.string.user_wallet_list_error_wallet_already_saved),
),
)
}

View file

@ -6,11 +6,9 @@ import com.tangem.core.decompose.di.ComponentScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.ui.components.SimpleOkDialog
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.domain.card.DerivePublicKeysUseCase
import com.tangem.domain.card.HasMissedDerivationsUseCase
import com.tangem.domain.managetokens.model.exceptoin.CustomTokenFormValidationException
@ -229,12 +227,9 @@ internal class CustomTokenFormModel @Inject constructor(
}
private fun showErrorDialog() {
val dialog = ContentMessage { onDismiss ->
SimpleOkDialog(
message = stringResourceSafe(R.string.common_unknown_error),
onDismissDialog = onDismiss,
)
}
val dialog = DialogMessage(
message = resourceReference(R.string.common_unknown_error),
)
messageSender.send(dialog)
}

View file

@ -1,22 +0,0 @@
package com.tangem.features.managetokens.ui.dialog
import androidx.compose.runtime.Composable
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.features.managetokens.impl.R
@Composable
internal fun CurrencyUnsupportedDialog(title: TextReference, message: TextReference, onDismiss: () -> Unit) {
BasicDialog(
title = title.resolveReference(),
message = message.resolveReference(),
confirmButton = DialogButtonUM(
title = stringResourceSafe(R.string.common_ok),
onClick = onDismiss,
),
onDismissDialog = onDismiss,
)
}

View file

@ -1,30 +0,0 @@
package com.tangem.features.managetokens.ui.dialog
import androidx.compose.runtime.Composable
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.domain.managetokens.model.ManagedCryptoCurrency
import com.tangem.domain.tokens.model.Network
import com.tangem.features.managetokens.impl.R
@Composable
internal fun HasLinkedTokensWarning(currency: ManagedCryptoCurrency, network: Network, onDismiss: () -> Unit) {
BasicDialog(
title = stringResourceSafe(
R.string.token_details_unable_hide_alert_title,
currency.name,
),
message = stringResourceSafe(
R.string.token_details_unable_hide_alert_message,
currency.name,
currency.symbol,
network.name,
),
confirmButton = DialogButtonUM(
title = stringResourceSafe(R.string.common_ok),
onClick = onDismiss,
),
onDismissDialog = onDismiss,
)
}

View file

@ -1,29 +0,0 @@
package com.tangem.features.managetokens.ui.dialog
import androidx.compose.runtime.Composable
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.domain.managetokens.model.ManagedCryptoCurrency
import com.tangem.features.managetokens.impl.R
@Composable
internal fun HideTokenWarning(currency: ManagedCryptoCurrency, onConfirm: () -> Unit, onDismiss: () -> Unit) {
BasicDialog(
title = stringResourceSafe(
R.string.token_details_hide_alert_title,
currency.name,
),
message = stringResourceSafe(R.string.token_details_hide_alert_message),
confirmButton = DialogButtonUM(
title = stringResourceSafe(R.string.token_details_hide_alert_hide),
warning = true,
onClick = onConfirm,
),
dismissButton = DialogButtonUM(
title = stringResourceSafe(R.string.common_cancel),
onClick = onDismiss,
),
onDismissDialog = onDismiss,
)
}

View file

@ -5,7 +5,8 @@ import com.tangem.core.ui.clipboard.ClipboardManager
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.core.ui.message.EventMessageAction
import com.tangem.core.ui.message.SnackbarMessage
import com.tangem.domain.managetokens.model.CurrencyUnsupportedState
import com.tangem.domain.managetokens.model.ManagedCryptoCurrency
@ -13,9 +14,6 @@ import com.tangem.domain.tokens.model.Network
import com.tangem.features.managetokens.component.ManageTokensSource
import com.tangem.features.managetokens.entity.item.CurrencyItemUM
import com.tangem.features.managetokens.impl.R
import com.tangem.features.managetokens.ui.dialog.CurrencyUnsupportedDialog
import com.tangem.features.managetokens.ui.dialog.HasLinkedTokensWarning
import com.tangem.features.managetokens.ui.dialog.HideTokenWarning
import com.tangem.features.managetokens.utils.mapper.toUiModel
import com.tangem.features.managetokens.utils.ui.toggleExpanded
import com.tangem.features.managetokens.utils.ui.update
@ -195,26 +193,23 @@ internal class ManageTokensUiManager(
}
private fun showUnsupportedWarning(unsupportedState: CurrencyUnsupportedState) {
val message = ContentMessage { onDismiss ->
CurrencyUnsupportedDialog(
title = resourceReference(R.string.common_warning),
message = when (unsupportedState) {
is CurrencyUnsupportedState.Token.NetworkTokensUnsupported -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.Token.UnsupportedCurve -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.UnsupportedNetwork -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
},
onDismiss = onDismiss,
)
}
val message = DialogMessage(
title = resourceReference(R.string.common_warning),
message = when (unsupportedState) {
is CurrencyUnsupportedState.Token.NetworkTokensUnsupported -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.Token.UnsupportedCurve -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.UnsupportedNetwork -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
},
)
messageSender.send(message)
}
@ -243,27 +238,40 @@ internal class ManageTokensUiManager(
}
private fun showLinkedTokensWarning(currency: ManagedCryptoCurrency, network: Network) {
val message = ContentMessage { onDismiss ->
HasLinkedTokensWarning(
currency = currency,
network = network,
onDismiss = onDismiss,
)
}
val message = DialogMessage(
title = resourceReference(
id = R.string.token_details_unable_hide_alert_title,
formatArgs = wrappedList(currency.name),
),
message = resourceReference(
id = R.string.token_details_unable_hide_alert_message,
formatArgs = wrappedList(
currency.name,
currency.symbol,
network.name,
),
),
)
messageSender.send(message)
}
private fun showHideTokenWarning(currency: ManagedCryptoCurrency, onConfirm: () -> Unit) {
val message = ContentMessage { onDismiss ->
HideTokenWarning(
currency = currency,
onConfirm = {
onConfirm()
onDismiss()
},
onDismiss = onDismiss,
)
}
val message = DialogMessage(
title = resourceReference(
id = R.string.token_details_hide_alert_title,
formatArgs = wrappedList(currency.name),
),
message = resourceReference(R.string.token_details_hide_alert_message),
firstActionBuilder = {
EventMessageAction(
title = resourceReference(R.string.token_details_hide_alert_hide),
warning = true,
onClick = onConfirm,
)
},
secondActionBuilder = { cancelAction() },
)
messageSender.send(message)
}

View file

@ -11,7 +11,7 @@ import com.tangem.core.ui.components.rows.model.BlockchainRowUM
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.core.ui.message.SnackbarMessage
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
import com.tangem.domain.appcurrency.model.AppCurrency
@ -26,7 +26,6 @@ import com.tangem.features.markets.impl.R
import com.tangem.features.markets.portfolio.api.MarketsPortfolioComponent
import com.tangem.features.markets.portfolio.impl.analytics.PortfolioAnalyticsEvent
import com.tangem.features.markets.portfolio.impl.loader.PortfolioDataLoader
import com.tangem.features.markets.portfolio.impl.ui.WarningDialog
import com.tangem.features.markets.portfolio.impl.ui.state.MyPortfolioUM
import com.tangem.lib.crypto.BlockchainUtils
import com.tangem.utils.Provider
@ -259,25 +258,22 @@ internal class MarketsPortfolioModel @Inject constructor(
}
private fun showUnsupportedWarning(unsupportedState: CurrencyUnsupportedState) {
val message = ContentMessage { onDismiss ->
WarningDialog(
message = when (unsupportedState) {
is CurrencyUnsupportedState.Token.NetworkTokensUnsupported -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.Token.UnsupportedCurve -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.UnsupportedNetwork -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
},
onDismiss = onDismiss,
)
}
val message = DialogMessage(
message = when (unsupportedState) {
is CurrencyUnsupportedState.Token.NetworkTokensUnsupported -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.Token.UnsupportedCurve -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
is CurrencyUnsupportedState.UnsupportedNetwork -> resourceReference(
id = R.string.alert_manage_tokens_unsupported_curve_message,
formatArgs = wrappedList(unsupportedState.networkName),
)
},
)
messageSender.send(message)
}

View file

@ -9,7 +9,7 @@ import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
import com.tangem.core.ui.components.bottomsheets.tokenreceive.TokenReceiveBottomSheetConfig
import com.tangem.core.ui.components.bottomsheets.tokenreceive.mapToAddressModels
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.core.ui.message.SnackbarMessage
import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.demo.IsDemoCardUseCase
@ -21,7 +21,6 @@ import com.tangem.domain.tokens.model.TokenActionsState
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.features.markets.impl.R
import com.tangem.features.markets.portfolio.impl.loader.PortfolioData
import com.tangem.features.markets.portfolio.impl.ui.WarningDialog
import com.tangem.features.markets.portfolio.impl.ui.state.TokenActionsBSContentUM
import com.tangem.features.onramp.OnrampFeatureToggles
import com.tangem.utils.Provider
@ -84,13 +83,9 @@ internal class TokenActionsHandler @AssistedInject constructor(
}
private fun showDemoModeWarning() {
val message = ContentMessage { onDismiss ->
WarningDialog(
message = resourceReference(R.string.alert_demo_feature_disabled),
onDismiss = onDismiss,
)
}
val message = DialogMessage(
message = resourceReference(R.string.alert_demo_feature_disabled),
)
messageSender.send(message)
}

View file

@ -1,27 +0,0 @@
package com.tangem.features.markets.portfolio.impl.ui
import androidx.compose.runtime.Composable
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.features.markets.impl.R
@Composable
internal fun WarningDialog(
message: TextReference,
onDismiss: () -> Unit,
title: TextReference = resourceReference(R.string.common_warning),
) {
BasicDialog(
title = title.resolveReference(),
message = message.resolveReference(),
confirmButton = DialogButtonUM(
title = stringResourceSafe(R.string.common_ok),
onClick = onDismiss,
),
onDismissDialog = onDismiss,
)
}

View file

@ -10,11 +10,8 @@ import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.navigation.Router
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.navigation.url.UrlOpener
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.core.ui.message.EventMessageAction
import com.tangem.domain.demo.IsDemoCardUseCase
import com.tangem.domain.onramp.*
import com.tangem.domain.onramp.analytics.OnrampAnalyticsEvent
@ -23,7 +20,6 @@ import com.tangem.domain.onramp.model.OnrampProviderWithQuote
import com.tangem.domain.onramp.model.OnrampQuote
import com.tangem.domain.onramp.model.error.OnrampError
import com.tangem.domain.wallets.usecase.GetWalletsUseCase
import com.tangem.features.onramp.impl.R
import com.tangem.features.onramp.main.OnrampMainComponent
import com.tangem.features.onramp.main.entity.*
import com.tangem.features.onramp.main.entity.factory.OnrampStateFactory
@ -346,31 +342,19 @@ internal class OnrampMainComponentModel @Inject constructor(
private fun showDemoWarning() {
val alertUM = AlertDemoModeUM(onConfirmClick = {})
messageSender.send(
message = ContentMessage { onDismiss ->
val confirmButton = DialogButtonUM(
title = alertUM.confirmButtonText.resolveReference(),
onClick = {
alertUM.onConfirmClick()
onDismiss()
},
)
val dismissButton = DialogButtonUM(
title = stringResourceSafe(id = R.string.common_cancel),
onClick = onDismiss,
)
BasicDialog(
message = alertUM.message.resolveReference(),
confirmButton = confirmButton,
onDismissDialog = onDismiss,
title = alertUM.title.resolveReference(),
dismissButton = dismissButton,
val message = DialogMessage(
title = alertUM.title,
message = alertUM.message,
firstActionBuilder = {
EventMessageAction(
title = alertUM.confirmButtonText,
onClick = alertUM.onConfirmClick,
)
},
secondActionBuilder = { cancelAction() },
)
messageSender.send(message)
}
private fun sendOnrampErrorAnalytic(error: OnrampError) {

View file

@ -6,11 +6,12 @@ import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.navigation.Router
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.navigation.url.UrlOpener
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.components.appbar.models.TopAppBarButtonUM
import com.tangem.core.ui.extensions.*
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.extensions.combinedReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.message.DialogMessage
import com.tangem.domain.onramp.GetOnrampRedirectUrlUseCase
import com.tangem.domain.onramp.model.error.OnrampError
import com.tangem.features.onramp.impl.R
@ -82,22 +83,11 @@ internal class OnrampRedirectModel @Inject constructor(
providerName = params.onrampProviderWithQuote.provider.info.name,
paymentMethod = params.onrampProviderWithQuote.paymentMethod.name,
)
val contentMessage = ContentMessage { onDismiss ->
BasicDialog(
message = stringResourceSafe(id = R.string.common_unknown_error),
confirmButton = DialogButtonUM(
title = stringResourceSafe(id = R.string.common_ok),
onClick = {
params.onBack()
onDismiss()
},
),
onDismissDialog = {
params.onBack()
onDismiss()
},
)
}
messageSender.send(contentMessage)
val message = DialogMessage(
message = resourceReference(R.string.common_unknown_error),
onDismissRequest = params.onBack,
)
messageSender.send(message)
}
}

View file

@ -10,11 +10,8 @@ import com.tangem.core.decompose.di.ComponentScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.core.ui.message.EventMessageAction
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.demo.IsDemoCardUseCase
@ -130,30 +127,19 @@ internal class OnrampOperationModel @Inject constructor(
if (isDemoCardUseCase(cardId = selectedUserWallet.cardId)) {
val alertUM = AlertDemoModeUM(onConfirmClick = {})
messageSender.send(
message = ContentMessage { onDismiss ->
val confirmButton = DialogButtonUM(
title = alertUM.confirmButtonText.resolveReference(),
onClick = {
alertUM.onConfirmClick()
onDismiss()
},
)
val dismissButton = DialogButtonUM(
title = stringResourceSafe(id = R.string.common_cancel),
onClick = onDismiss,
)
BasicDialog(
message = alertUM.message.resolveReference(),
confirmButton = confirmButton,
onDismissDialog = onDismiss,
title = alertUM.title.resolveReference(),
dismissButton = dismissButton,
val message = DialogMessage(
title = alertUM.title,
message = alertUM.message,
firstActionBuilder = {
EventMessageAction(
title = alertUM.confirmButtonText,
onClick = alertUM.onConfirmClick,
)
},
secondActionBuilder = { cancelAction() },
)
messageSender.send(message)
} else {
action()
}

View file

@ -1,6 +1,5 @@
package com.tangem.features.onramp.success.model
import androidx.compose.ui.res.stringResource
import arrow.core.getOrElse
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.decompose.model.Model
@ -8,10 +7,9 @@ import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.navigation.Router
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.navigation.url.UrlOpener
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.domain.onramp.GetOnrampStatusUseCase
import com.tangem.domain.onramp.GetOnrampTransactionUseCase
import com.tangem.domain.onramp.OnrampRemoveTransactionUseCase
@ -126,29 +124,17 @@ internal class OnrampSuccessComponentModel @Inject constructor(
}
private fun showErrorAlert(error: OnrampError) {
val contentMessage = ContentMessage { onDismiss ->
val errorCode = (error as? OnrampError.DataError)?.code
val message = if (errorCode.isNullOrBlank()) {
stringResource(R.string.common_unknown_error)
val errorCode = (error as? OnrampError.DataError)?.code
val message = DialogMessage(
message = if (errorCode.isNullOrBlank()) {
resourceReference(R.string.common_unknown_error)
} else {
stringResource(R.string.express_error_code, wrappedList(errorCode))
}
BasicDialog(
message = message,
confirmButton = DialogButtonUM(
title = stringResource(id = R.string.common_ok),
onClick = {
router.pop()
onDismiss()
},
),
onDismissDialog = {
router.pop()
onDismiss()
},
)
}
messageSender.send(contentMessage)
resourceReference(R.string.express_error_code, wrappedList(errorCode))
},
onDismissRequest = router::pop,
)
messageSender.send(message)
}
private fun removeTransactionIfTerminalStatus(

View file

@ -11,11 +11,9 @@ import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.navigation.Router
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.ui.components.BasicDialog
import com.tangem.core.ui.components.DialogButtonUM
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.message.ContentMessage
import com.tangem.core.ui.message.DialogMessage
import com.tangem.core.ui.message.EventMessageAction
import com.tangem.core.ui.message.SnackbarMessage
import com.tangem.domain.common.util.cardTypesResolver
import com.tangem.domain.models.scan.CardDTO
@ -93,26 +91,19 @@ internal class WalletSettingsModel @Inject constructor(
isRenameWalletAvailable = isRenameWalletAvailable,
renameWallet = { openRenameWalletDialog(userWallet, dialogNavigation) },
forgetWallet = {
messageSender.send(
ContentMessage { onDismiss ->
BasicDialog(
message = stringResourceSafe(R.string.user_wallet_list_delete_prompt),
onDismissDialog = onDismiss,
confirmButton = DialogButtonUM(
title = stringResourceSafe(R.string.common_delete),
warning = true,
onClick = {
forgetWallet()
onDismiss()
},
),
dismissButton = DialogButtonUM(
title = stringResourceSafe(R.string.common_cancel),
onClick = onDismiss,
),
val message = DialogMessage(
message = resourceReference(R.string.user_wallet_list_delete_prompt),
firstActionBuilder = {
EventMessageAction(
title = resourceReference(R.string.common_delete),
warning = true,
onClick = ::forgetWallet,
)
},
secondActionBuilder = { cancelAction() },
)
messageSender.send(message)
},
onLinkMoreCardsClick = {
onLinkMoreCardsClick(scanResponse = userWallet.scanResponse)