diff --git a/core/ui/src/main/java/com/tangem/core/ui/message/EventMessage.kt b/core/ui/src/main/java/com/tangem/core/ui/message/EventMessage.kt index 0828f90e8d..5f02c59f7f 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/message/EventMessage.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/message/EventMessage.kt @@ -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. * diff --git a/core/ui/src/main/java/com/tangem/core/ui/message/EventMessageEffect.kt b/core/ui/src/main/java/com/tangem/core/ui/message/EventMessageEffect.kt index 7a4451f689..157d8ae538 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/message/EventMessageEffect.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/message/EventMessageEffect.kt @@ -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, diff --git a/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/UserWalletSaver.kt b/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/UserWalletSaver.kt index 450ed613ad..fd621dbe14 100644 --- a/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/UserWalletSaver.kt +++ b/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/UserWalletSaver.kt @@ -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), + ), ) } diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt index 7ae0b35b09..ad5db50c72 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt @@ -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) } diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/CurrencyUnsupportedDialog.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/CurrencyUnsupportedDialog.kt deleted file mode 100644 index 076cca7f32..0000000000 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/CurrencyUnsupportedDialog.kt +++ /dev/null @@ -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, - ) -} \ No newline at end of file diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/HasLinkedTokensWarning.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/HasLinkedTokensWarning.kt deleted file mode 100644 index 3e84202ce6..0000000000 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/HasLinkedTokensWarning.kt +++ /dev/null @@ -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, - ) -} \ No newline at end of file diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/HideTokenWarning.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/HideTokenWarning.kt deleted file mode 100644 index 547791ec51..0000000000 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/dialog/HideTokenWarning.kt +++ /dev/null @@ -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, - ) -} \ No newline at end of file diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensUiManager.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensUiManager.kt index cad8517d8c..b3c1d8d3d7 100644 --- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensUiManager.kt +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/list/ManageTokensUiManager.kt @@ -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) } diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt index c55ba95bec..68b432f633 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/MarketsPortfolioModel.kt @@ -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) } diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/TokenActionsHandler.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/TokenActionsHandler.kt index cce4273617..2ca208e28b 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/TokenActionsHandler.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/TokenActionsHandler.kt @@ -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) } diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/WarningDialog.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/WarningDialog.kt deleted file mode 100644 index e03f24de02..0000000000 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/WarningDialog.kt +++ /dev/null @@ -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, - ) -} \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt index 5a09dc2d37..63a9b5ce7e 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/main/model/OnrampMainComponentModel.kt @@ -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) { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/redirect/model/OnrampRedirectModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/redirect/model/OnrampRedirectModel.kt index df74ea2d77..cc6426d771 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/redirect/model/OnrampRedirectModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/redirect/model/OnrampRedirectModel.kt @@ -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) } } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt index 6d6e01358c..77168538c5 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/model/OnrampOperationModel.kt @@ -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() } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt index 514a00dc19..03cf4aa0e3 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/success/model/OnrampSuccessComponentModel.kt @@ -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( diff --git a/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt b/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt index 5ac744ef62..7952d3d3a1 100644 --- a/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt +++ b/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt @@ -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)