From 2f5b70dfaab297c6e9701d2c2deaae4e447d27a4 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 1 Jul 2025 20:34:06 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../NavigationButtonsState.kt | 1 + .../NavigationModelCallback.kt | 5 +++ .../ui/navigationButtons}/NavigationUM.kt | 6 ++-- .../send/v2/api/entity}/PredefinedValues.kt | 2 +- .../destination/DestinationRoute.kt | 8 +++++ .../SendDestinationBlockComponent.kt | 10 ++++++ .../destination/SendDestinationComponent.kt | 15 ++++++++ .../SendDestinationComponentParams.kt | 14 ++++---- .../entity}/DestinationRecipientListUM.kt | 4 +-- .../entity}/DestinationTextFieldUM.kt | 4 +-- .../destination/entity}/DestinationUM.kt | 4 +-- .../send/v2/common/CommonSendRoute.kt | 3 +- .../v2/common/SendNavigationModelCallback.kt | 7 ---- .../features/send/v2/common/ui/SendContent.kt | 2 +- .../v2/common/ui/SendNavigationButtons.kt | 24 ++++++------- .../send/v2/common/ui/state/NavigationUM.kt | 23 ------------ .../send/v2/send/DefaultSendComponent.kt | 10 +++--- .../v2/send/analytics/SendAnalyticHelper.kt | 4 +-- .../v2/send/confirm/SendConfirmComponent.kt | 9 +++-- .../v2/send/confirm/model/SendConfirmModel.kt | 35 ++++++++++--------- .../v2/send/confirm/ui/SendConfirmContent.kt | 6 ++-- .../features/send/v2/send/model/SendModel.kt | 8 ++--- .../features/send/v2/send/ui/state/SendUM.kt | 4 +-- .../v2/sendnft/DefaultNFTSendComponent.kt | 10 +++--- .../analytics/NFTSendAnalyticHelper.kt | 4 +-- .../confirm/NFTSendConfirmComponent.kt | 8 ++--- .../confirm/model/NFTSendConfirmModel.kt | 31 ++++++++-------- .../confirm/ui/NFTSendConfirmContent.kt | 6 ++-- .../send/v2/sendnft/model/NFTSendModel.kt | 6 ++-- .../send/v2/sendnft/ui/state/NFTSendUM.kt | 4 +-- .../amount/SendAmountBlockComponent.kt | 2 +- .../amount/SendAmountComponent.kt | 4 +-- .../amount/SendAmountComponentParams.kt | 2 +- .../amount/model/SendAmountModel.kt | 19 +++++----- ...> DefaultSendDestinationBlockComponent.kt} | 26 ++++++++++---- ....kt => DefaultSendDestinationComponent.kt} | 25 ++++++++----- .../destination/di/SendDestinationModule.kt | 27 ++++++++++++++ .../destination/model/SendDestinationModel.kt | 24 ++++++------- .../SendRecipientHistoryListConverter.kt | 2 +- .../SendRecipientWalletListConverter.kt | 2 +- .../model/transformers/RecentListUtils.kt | 2 +- .../SendDestinationAddressTransformer.kt | 2 +- .../SendDestinationInitialStateTransformer.kt | 4 +-- .../SendDestinationMemoTransformer.kt | 2 +- ...ndDestinationPredefinedStateTransformer.kt | 2 +- .../SendDestinationRecentListTransformer.kt | 2 +- ...dDestinationValidationResultTransformer.kt | 9 ++--- ...DestinationValidationStartedTransformer.kt | 2 +- .../destination/ui/DestinationBlock.kt | 6 ++-- .../destination/ui/SendDestinationContent.kt | 6 ++-- .../v2/subcomponents/fee/SendFeeComponent.kt | 4 +-- .../subcomponents/fee/model/SendFeeModel.kt | 8 ++--- .../v2/impl/amount/model/SwapAmountModel.kt | 2 +- .../common/SwapNavigationModelCallback.kt | 2 +- 54 files changed, 261 insertions(+), 202 deletions(-) create mode 100644 common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationModelCallback.kt rename {features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/entity => common/ui/src/main/java/com/tangem/common/ui/navigationButtons}/NavigationUM.kt (80%) rename features/send-v2/{impl/src/main/java/com/tangem/features/send/v2/common => api/src/main/java/com/tangem/features/send/v2/api/entity}/PredefinedValues.kt (93%) create mode 100644 features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/DestinationRoute.kt create mode 100644 features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationBlockComponent.kt create mode 100644 features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationComponent.kt rename features/send-v2/{impl/src/main/java/com/tangem/features/send/v2 => api/src/main/java/com/tangem/features/send/v2/api}/subcomponents/destination/SendDestinationComponentParams.kt (70%) rename features/send-v2/{impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state => api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity}/DestinationRecipientListUM.kt (85%) rename features/send-v2/{impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state => api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity}/DestinationTextFieldUM.kt (91%) rename features/send-v2/{impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state => api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity}/DestinationUM.kt (88%) delete mode 100644 features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/SendNavigationModelCallback.kt delete mode 100644 features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/state/NavigationUM.kt rename features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/{SendDestinationBlockComponent.kt => DefaultSendDestinationBlockComponent.kt} (59%) rename features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/{SendDestinationComponent.kt => DefaultSendDestinationComponent.kt} (52%) create mode 100644 features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/di/SendDestinationModule.kt diff --git a/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsState.kt b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsState.kt index 8944570df5..e0bddfab66 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsState.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationButtonsState.kt @@ -35,5 +35,6 @@ data class NavigationButton( val showProgress: Boolean = false, val isEnabled: Boolean = true, val isDimmed: Boolean = false, + val isHapticClick: Boolean = false, val onClick: () -> Unit, ) \ No newline at end of file diff --git a/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationModelCallback.kt b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationModelCallback.kt new file mode 100644 index 0000000000..1e2401e1e8 --- /dev/null +++ b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationModelCallback.kt @@ -0,0 +1,5 @@ +package com.tangem.common.ui.navigationButtons + +interface NavigationModelCallback { + fun onNavigationResult(navigationUM: NavigationUM) +} \ No newline at end of file diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/entity/NavigationUM.kt b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationUM.kt similarity index 80% rename from features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/entity/NavigationUM.kt rename to common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationUM.kt index b491576333..dcde9ac935 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/entity/NavigationUM.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/navigationButtons/NavigationUM.kt @@ -1,12 +1,11 @@ -package com.tangem.features.swap.v2.impl.common.entity +package com.tangem.common.ui.navigationButtons import androidx.annotation.DrawableRes import androidx.compose.runtime.Immutable -import com.tangem.common.ui.navigationButtons.NavigationButton import com.tangem.core.ui.extensions.TextReference @Immutable -internal sealed class NavigationUM { +sealed class NavigationUM { data class Content( val title: TextReference, val subtitle: TextReference?, @@ -15,6 +14,7 @@ internal sealed class NavigationUM { @DrawableRes val additionalIconRes: Int? = null, val additionalIconClick: (() -> Unit)? = null, val primaryButton: NavigationButton, + val prevButton: NavigationButton? = null, val secondaryPairButtonsUM: Pair? = null, ) : NavigationUM() diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/PredefinedValues.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/entity/PredefinedValues.kt similarity index 93% rename from features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/PredefinedValues.kt rename to features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/entity/PredefinedValues.kt index 9ebfa54ccf..db5fb06998 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/PredefinedValues.kt +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/entity/PredefinedValues.kt @@ -1,4 +1,4 @@ -package com.tangem.features.send.v2.common +package com.tangem.features.send.v2.api.entity sealed class PredefinedValues { data object Empty : PredefinedValues() diff --git a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/DestinationRoute.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/DestinationRoute.kt new file mode 100644 index 0000000000..a78eb8e11a --- /dev/null +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/DestinationRoute.kt @@ -0,0 +1,8 @@ +package com.tangem.features.send.v2.api.subcomponents.destination + +/** + * Common route for destination + */ +interface DestinationRoute { + val isEditMode: Boolean +} \ No newline at end of file diff --git a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationBlockComponent.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationBlockComponent.kt new file mode 100644 index 0000000000..3e1a674323 --- /dev/null +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationBlockComponent.kt @@ -0,0 +1,10 @@ +package com.tangem.features.send.v2.api.subcomponents.destination + +import com.tangem.core.decompose.factory.ComponentFactory +import com.tangem.core.ui.decompose.ComposableContentComponent + +interface SendDestinationBlockComponent : ComposableContentComponent { + + interface Factory : + ComponentFactory +} \ No newline at end of file diff --git a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationComponent.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationComponent.kt new file mode 100644 index 0000000000..dff11e3f29 --- /dev/null +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationComponent.kt @@ -0,0 +1,15 @@ +package com.tangem.features.send.v2.api.subcomponents.destination + +import com.tangem.common.ui.navigationButtons.NavigationModelCallback +import com.tangem.core.decompose.factory.ComponentFactory +import com.tangem.core.ui.decompose.ComposableContentComponent +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM + +interface SendDestinationComponent : ComposableContentComponent { + + interface ModelCallback : NavigationModelCallback { + fun onDestinationResult(destinationUM: DestinationUM) + } + + interface Factory : ComponentFactory +} \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationComponentParams.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationComponentParams.kt similarity index 70% rename from features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationComponentParams.kt rename to features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationComponentParams.kt index 006b157d84..ad57c89683 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationComponentParams.kt +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/SendDestinationComponentParams.kt @@ -1,16 +1,14 @@ -package com.tangem.features.send.v2.subcomponents.destination +package com.tangem.features.send.v2.api.subcomponents.destination import com.tangem.core.ui.extensions.TextReference import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.wallets.models.UserWalletId -import com.tangem.features.send.v2.common.CommonSendRoute -import com.tangem.features.send.v2.common.PredefinedValues -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponent.ModelCallback -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.entity.PredefinedValues +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow -internal sealed class SendDestinationComponentParams { +sealed class SendDestinationComponentParams { abstract val state: DestinationUM abstract val analyticsCategoryName: String @@ -24,8 +22,8 @@ internal sealed class SendDestinationComponentParams { override val userWalletId: UserWalletId, val title: TextReference, val isBalanceHidingFlow: StateFlow, - val currentRoute: Flow, - val callback: ModelCallback, + val currentRoute: Flow, + val callback: SendDestinationComponent.ModelCallback, val onBackClick: () -> Unit, val onNextClick: () -> Unit, ) : SendDestinationComponentParams() diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationRecipientListUM.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationRecipientListUM.kt similarity index 85% rename from features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationRecipientListUM.kt rename to features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationRecipientListUM.kt index 50943e30e9..ae9a463e8d 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationRecipientListUM.kt +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationRecipientListUM.kt @@ -1,4 +1,4 @@ -package com.tangem.features.send.v2.subcomponents.destination.ui.state +package com.tangem.features.send.v2.api.subcomponents.destination.entity import androidx.annotation.DrawableRes import androidx.compose.runtime.Immutable @@ -7,7 +7,7 @@ import com.tangem.domain.models.network.Network import com.tangem.domain.wallets.models.UserWalletId @Immutable -internal data class DestinationRecipientListUM( +data class DestinationRecipientListUM( val id: String, val title: TextReference = TextReference.Companion.EMPTY, val subtitle: TextReference = TextReference.Companion.EMPTY, diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationTextFieldUM.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationTextFieldUM.kt similarity index 91% rename from features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationTextFieldUM.kt rename to features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationTextFieldUM.kt index abf90f46a7..55cc94b302 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationTextFieldUM.kt +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationTextFieldUM.kt @@ -1,11 +1,11 @@ -package com.tangem.features.send.v2.subcomponents.destination.ui.state +package com.tangem.features.send.v2.api.subcomponents.destination.entity import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.runtime.Immutable import com.tangem.core.ui.extensions.TextReference @Immutable -internal sealed class DestinationTextFieldUM { +sealed class DestinationTextFieldUM { /** Current value */ abstract val value: String diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationUM.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationUM.kt similarity index 88% rename from features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationUM.kt rename to features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationUM.kt index 8a73b412f0..f6ebfe61be 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/state/DestinationUM.kt +++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/subcomponents/destination/entity/DestinationUM.kt @@ -1,10 +1,10 @@ -package com.tangem.features.send.v2.subcomponents.destination.ui.state +package com.tangem.features.send.v2.api.subcomponents.destination.entity import androidx.compose.runtime.Immutable import kotlinx.collections.immutable.ImmutableList @Immutable -internal sealed class DestinationUM { +sealed class DestinationUM { abstract val isPrimaryButtonEnabled: Boolean diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/CommonSendRoute.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/CommonSendRoute.kt index e0889d71a4..7aaa0a1286 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/CommonSendRoute.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/CommonSendRoute.kt @@ -1,6 +1,7 @@ package com.tangem.features.send.v2.common import com.tangem.core.decompose.navigation.Route +import com.tangem.features.send.v2.api.subcomponents.destination.DestinationRoute import kotlinx.serialization.Serializable internal sealed class CommonSendRoute : Route { @@ -20,7 +21,7 @@ internal sealed class CommonSendRoute : Route { @Serializable data class Destination( override val isEditMode: Boolean, - ) : CommonSendRoute() + ) : CommonSendRoute(), DestinationRoute @Serializable data class Amount( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/SendNavigationModelCallback.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/SendNavigationModelCallback.kt deleted file mode 100644 index 0ce1403ae8..0000000000 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/SendNavigationModelCallback.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.tangem.features.send.v2.common - -import com.tangem.features.send.v2.common.ui.state.NavigationUM - -internal interface SendNavigationModelCallback { - fun onNavigationResult(navigationUM: NavigationUM) -} \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendContent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendContent.kt index 83ce304653..5edf831c46 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendContent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendContent.kt @@ -9,12 +9,12 @@ import com.arkivanov.decompose.extensions.compose.stack.Children import com.arkivanov.decompose.extensions.compose.stack.animation.slide import com.arkivanov.decompose.extensions.compose.stack.animation.stackAnimation import com.arkivanov.decompose.router.stack.ChildStack +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.ui.components.appbar.AppBarWithBackButtonAndIcon import com.tangem.core.ui.decompose.ComposableContentComponent import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.res.TangemTheme import com.tangem.features.send.v2.common.CommonSendRoute -import com.tangem.features.send.v2.common.ui.state.NavigationUM @Composable internal fun SendContent( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendNavigationButtons.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendNavigationButtons.kt index 4c50af08d0..31cf103e3d 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendNavigationButtons.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/SendNavigationButtons.kt @@ -19,6 +19,8 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp +import com.tangem.common.ui.navigationButtons.NavigationButton +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.ui.R import com.tangem.core.ui.components.SecondaryButtonIconStart import com.tangem.core.ui.components.SpacerW12 @@ -29,8 +31,6 @@ import com.tangem.core.ui.extensions.clickableSingle import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.utils.singleEvent -import com.tangem.features.send.v2.common.ui.state.NavigationUM -import com.tangem.features.send.v2.send.ui.state.ButtonsUM @Composable internal fun SendNavigationButtons(navigationUM: NavigationUM, modifier: Modifier = Modifier) { @@ -79,8 +79,8 @@ private fun SendNavigationButton(navigationUM: NavigationUM, modifier: Modifier } TangemButton( modifier = Modifier.fillMaxWidth(), - text = primaryButton.text.resolveReference(), - icon = primaryButton.iconResId?.let { + text = primaryButton.textReference.resolveReference(), + icon = primaryButton.iconRes?.let { TangemButtonIconPosition.End(it) } ?: TangemButtonIconPosition.None, enabled = primaryButton.isEnabled, @@ -96,7 +96,7 @@ private fun SendNavigationButton(navigationUM: NavigationUM, modifier: Modifier } @Composable -private fun SendDoneButtons(pairButtonsUM: ButtonsUM.SecondaryPairButtonsUM?, modifier: Modifier = Modifier) { +private fun SendDoneButtons(pairButtonsUM: Pair?, modifier: Modifier = Modifier) { val hapticFeedback = LocalHapticFeedback.current AnimatedVisibility( @@ -106,26 +106,26 @@ private fun SendDoneButtons(pairButtonsUM: ButtonsUM.SecondaryPairButtonsUM?, mo exit = slideOutVertically().plus(fadeOut()), label = "Animate show sent state buttons", ) { - val wrappedPairButtonsUM = remember(this) { requireNotNull(pairButtonsUM) } + val (leftButton, rightButton) = remember(this) { requireNotNull(pairButtonsUM) } Row(modifier = Modifier.padding(bottom = 12.dp)) { SecondaryButtonIconStart( - text = wrappedPairButtonsUM.leftText.resolveReference(), - iconResId = wrappedPairButtonsUM.leftIconResId!!, + text = leftButton.textReference.resolveReference(), + iconResId = leftButton.iconRes!!, onClick = { singleEvent { - wrappedPairButtonsUM.onLeftClick() + leftButton.onClick() } }, modifier = Modifier.weight(1f), ) SpacerW12() SecondaryButtonIconStart( - text = wrappedPairButtonsUM.rightText.resolveReference(), - iconResId = wrappedPairButtonsUM.rightIconResId!!, + text = rightButton.textReference.resolveReference(), + iconResId = rightButton.iconRes!!, onClick = { singleEvent { hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) - wrappedPairButtonsUM.onRightClick() + rightButton.onClick() } }, modifier = Modifier.weight(1f), diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/state/NavigationUM.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/state/NavigationUM.kt deleted file mode 100644 index 404f1a3e73..0000000000 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/ui/state/NavigationUM.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.tangem.features.send.v2.common.ui.state - -import androidx.annotation.DrawableRes -import androidx.compose.runtime.Immutable -import com.tangem.core.ui.extensions.TextReference -import com.tangem.features.send.v2.send.ui.state.ButtonsUM - -@Immutable -internal sealed class NavigationUM { - data class Content( - val title: TextReference, - val subtitle: TextReference?, - @DrawableRes val backIconRes: Int, - val backIconClick: () -> Unit, - @DrawableRes val additionalIconRes: Int? = null, - val additionalIconClick: (() -> Unit)? = null, - val primaryButton: ButtonsUM.PrimaryButtonUM, - val prevButton: ButtonsUM.PrimaryButtonUM?, - val secondaryPairButtonsUM: ButtonsUM.SecondaryPairButtonsUM?, - ) : NavigationUM() - - data object Empty : NavigationUM() -} \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/DefaultSendComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/DefaultSendComponent.kt index 491fcedcb7..da4ee0e26c 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/DefaultSendComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/DefaultSendComponent.kt @@ -32,9 +32,9 @@ import com.tangem.features.send.v2.send.confirm.SendConfirmComponent import com.tangem.features.send.v2.send.model.SendModel import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponent import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponentParams -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponent -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponentParams -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationComponent +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponent import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponentParams import dagger.assisted.Assisted @@ -108,7 +108,7 @@ internal class DefaultSendComponent @AssistedInject constructor( ) activeComponent.updateState(model.uiState.value.amountUM) } - is SendDestinationComponent -> { + is DefaultSendDestinationComponent -> { analyticsEventHandler.send( CommonSendAnalyticEvents.AddressScreenOpened(categoryName = analyticCategoryName), ) @@ -148,7 +148,7 @@ internal class DefaultSendComponent @AssistedInject constructor( private fun getDestinationComponent( factoryContext: AppComponentContext, route: CommonSendRoute, - ): SendDestinationComponent = SendDestinationComponent( + ): DefaultSendDestinationComponent = DefaultSendDestinationComponent( appComponentContext = factoryContext, params = SendDestinationComponentParams.DestinationParams( state = model.uiState.value.destinationUM, diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticHelper.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticHelper.kt index 807a4f0542..ab9490ce77 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticHelper.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/analytics/SendAnalyticHelper.kt @@ -6,8 +6,8 @@ import com.tangem.core.analytics.models.Basic import com.tangem.core.decompose.di.ModelScoped import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.features.send.v2.send.ui.state.SendUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationTextFieldUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationTextFieldUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeSelectorUM import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeUM import javax.inject.Inject diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/SendConfirmComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/SendConfirmComponent.kt index 22b3e7293e..997ad90f2a 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/SendConfirmComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/SendConfirmComponent.kt @@ -16,22 +16,21 @@ import com.tangem.domain.transaction.error.GetFeeError import com.tangem.domain.wallets.models.UserWallet import com.tangem.features.send.v2.api.SendNotificationsComponent import com.tangem.features.send.v2.api.SendNotificationsComponent.Params.NotificationData +import com.tangem.features.send.v2.api.entity.PredefinedValues +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams.DestinationBlockParams import com.tangem.features.send.v2.common.CommonSendRoute -import com.tangem.features.send.v2.common.PredefinedValues import com.tangem.features.send.v2.common.ui.state.ConfirmUM import com.tangem.features.send.v2.send.confirm.model.SendConfirmModel import com.tangem.features.send.v2.send.confirm.ui.SendConfirmContent import com.tangem.features.send.v2.send.ui.state.SendUM import com.tangem.features.send.v2.subcomponents.amount.SendAmountBlockComponent import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponentParams -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationBlockComponent -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponentParams.DestinationBlockParams +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationBlockComponent import com.tangem.features.send.v2.subcomponents.fee.SendFeeBlockComponent import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponentParams import com.tangem.features.send.v2.subcomponents.notifications.DefaultSendNotificationsComponent import com.tangem.utils.extensions.orZero import kotlinx.coroutines.flow.* -import kotlinx.coroutines.flow.StateFlow internal class SendConfirmComponent( appComponentContext: AppComponentContext, @@ -43,7 +42,7 @@ internal class SendConfirmComponent( private val blockClickEnableFlow = MutableStateFlow(false) private val destinationBlockComponent = - SendDestinationBlockComponent( + DefaultSendDestinationBlockComponent( appComponentContext = child("sendConfirmDestinationBlock"), params = DestinationBlockParams( state = model.uiState.value.destinationUM, diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt index 4110801b3d..f8abef07da 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt @@ -7,6 +7,8 @@ import com.tangem.blockchain.common.AmountType import com.tangem.blockchain.common.TransactionData import com.tangem.common.routing.AppRouter import com.tangem.common.ui.amountScreen.models.AmountState +import com.tangem.common.ui.navigationButtons.NavigationButton +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model @@ -33,13 +35,13 @@ import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase import com.tangem.domain.utils.convertToSdkAmount import com.tangem.domain.wallets.models.requireColdWallet import com.tangem.features.send.v2.api.SendNotificationsComponent.Params.NotificationData +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.common.CommonSendRoute import com.tangem.features.send.v2.common.SendBalanceUpdater import com.tangem.features.send.v2.common.SendConfirmAlertFactory import com.tangem.features.send.v2.common.analytics.CommonSendAnalyticEvents import com.tangem.features.send.v2.common.analytics.CommonSendAnalyticEvents.SendScreenSource import com.tangem.features.send.v2.common.ui.state.ConfirmUM -import com.tangem.features.send.v2.common.ui.state.NavigationUM import com.tangem.features.send.v2.impl.R import com.tangem.features.send.v2.send.analytics.SendAnalyticHelper import com.tangem.features.send.v2.send.confirm.SendConfirmComponent @@ -47,9 +49,7 @@ import com.tangem.features.send.v2.send.confirm.model.transformers.SendConfirmIn import com.tangem.features.send.v2.send.confirm.model.transformers.SendConfirmSendingStateTransformer import com.tangem.features.send.v2.send.confirm.model.transformers.SendConfirmSentStateTransformer import com.tangem.features.send.v2.send.confirm.model.transformers.SendConfirmationNotificationsTransformer -import com.tangem.features.send.v2.send.ui.state.ButtonsUM import com.tangem.features.send.v2.send.ui.state.SendUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.SendFeeCheckReloadListener import com.tangem.features.send.v2.subcomponents.fee.SendFeeCheckReloadTrigger import com.tangem.features.send.v2.subcomponents.fee.model.checkAndCalculateSubtractedAmount @@ -490,8 +490,8 @@ internal class SendConfirmModel @Inject constructor( ) appRouter.pop() }, - primaryButton = ButtonsUM.PrimaryButtonUM( - text = when (confirmUM) { + primaryButton = NavigationButton( + textReference = when (confirmUM) { is ConfirmUM.Success -> resourceReference(R.string.common_close) is ConfirmUM.Content -> if (confirmUM.isSending) { resourceReference(R.string.send_sending) @@ -500,30 +500,33 @@ internal class SendConfirmModel @Inject constructor( } else -> resourceReference(R.string.common_send) }, - iconResId = R.drawable.ic_tangem_24.takeIf { isReadyToSend }, + iconRes = R.drawable.ic_tangem_24.takeIf { isReadyToSend }, isEnabled = confirmUM.isPrimaryButtonEnabled, isHapticClick = isReadyToSend, onClick = { when (confirmUM) { is ConfirmUM.Success -> appRouter.pop() is ConfirmUM.Content -> if (confirmUM.isSending) { - return@PrimaryButtonUM + return@NavigationButton } else { onSendClick() } - else -> return@PrimaryButtonUM + else -> return@NavigationButton } }, ), prevButton = null, - secondaryPairButtonsUM = ButtonsUM.SecondaryPairButtonsUM( - leftText = resourceReference(R.string.common_explore), - leftIconResId = R.drawable.ic_web_24, - onLeftClick = ::onExploreClick, - rightText = resourceReference(R.string.common_share), - rightIconResId = R.drawable.ic_share_24, - onRightClick = ::onShareClick, - ).takeIf { confirmUM is ConfirmUM.Success }, + secondaryPairButtonsUM = ( + NavigationButton( + textReference = resourceReference(R.string.common_explore), + iconRes = R.drawable.ic_web_24, + onClick = ::onExploreClick, + ) to NavigationButton( + textReference = resourceReference(R.string.common_share), + iconRes = R.drawable.ic_share_24, + onClick = ::onShareClick, + ) + ).takeIf { confirmUM is ConfirmUM.Success }, ), ), ) diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/ui/SendConfirmContent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/ui/SendConfirmContent.kt index 649af62424..8dc774afd7 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/ui/SendConfirmContent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/ui/SendConfirmContent.kt @@ -25,7 +25,7 @@ import com.tangem.features.send.v2.common.ui.tapHelp import com.tangem.features.send.v2.impl.R import com.tangem.features.send.v2.send.ui.state.SendUM import com.tangem.features.send.v2.subcomponents.amount.SendAmountBlockComponent -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationBlockComponent +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationBlockComponent import com.tangem.features.send.v2.subcomponents.fee.SendFeeBlockComponent import com.tangem.features.send.v2.subcomponents.notifications import com.tangem.features.send.v2.subcomponents.notifications.DefaultSendNotificationsComponent @@ -37,7 +37,7 @@ private const val BLOCKS_KEY = "BLOCKS_KEY" @Composable internal fun SendConfirmContent( sendUM: SendUM, - destinationBlockComponent: SendDestinationBlockComponent, + destinationBlockComponent: DefaultSendDestinationBlockComponent, amountBlockComponent: SendAmountBlockComponent, feeBlockComponent: SendFeeBlockComponent, notificationsComponent: DefaultSendNotificationsComponent, @@ -76,7 +76,7 @@ internal fun SendConfirmContent( private fun LazyListScope.blocks( uiState: SendUM, - destinationBlockComponent: SendDestinationBlockComponent, + destinationBlockComponent: DefaultSendDestinationBlockComponent, amountBlockComponent: SendAmountBlockComponent, feeBlockComponent: SendFeeBlockComponent, ) { diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt index 17d9046d23..c573aad0bd 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt @@ -6,6 +6,7 @@ import arrow.core.getOrElse import arrow.core.left import com.tangem.blockchain.common.transaction.TransactionFee import com.tangem.common.ui.amountScreen.models.AmountState +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model import com.tangem.core.decompose.model.ParamsContainer @@ -38,18 +39,17 @@ import com.tangem.domain.wallets.models.requireColdWallet import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.features.send.v2.api.SendComponent import com.tangem.features.send.v2.api.SendFeatureToggles +import com.tangem.features.send.v2.api.entity.PredefinedValues +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponent +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.common.CommonSendRoute -import com.tangem.features.send.v2.common.PredefinedValues import com.tangem.features.send.v2.common.SendConfirmAlertFactory import com.tangem.features.send.v2.common.ui.state.ConfirmUM -import com.tangem.features.send.v2.common.ui.state.NavigationUM import com.tangem.features.send.v2.send.confirm.SendConfirmComponent import com.tangem.features.send.v2.send.ui.state.SendUM import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponent import com.tangem.features.send.v2.subcomponents.amount.SendAmountUpdateQRTrigger -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponent import com.tangem.features.send.v2.subcomponents.destination.model.transformers.SendDestinationInitialStateTransformer -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponent import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeUM import com.tangem.utils.coroutines.CoroutineDispatcherProvider diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/ui/state/SendUM.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/ui/state/SendUM.kt index a84a77e878..963bec1cf2 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/ui/state/SendUM.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/ui/state/SendUM.kt @@ -1,9 +1,9 @@ package com.tangem.features.send.v2.send.ui.state import com.tangem.common.ui.amountScreen.models.AmountState -import com.tangem.features.send.v2.common.ui.state.NavigationUM +import com.tangem.common.ui.navigationButtons.NavigationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.common.ui.state.ConfirmUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeUM internal data class SendUM( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/DefaultNFTSendComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/DefaultNFTSendComponent.kt index 2c8f31fd10..05ca4dddfb 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/DefaultNFTSendComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/DefaultNFTSendComponent.kt @@ -28,9 +28,9 @@ import com.tangem.features.send.v2.common.utils.safeNextClick import com.tangem.features.send.v2.impl.R import com.tangem.features.send.v2.sendnft.confirm.NFTSendConfirmComponent import com.tangem.features.send.v2.sendnft.model.NFTSendModel -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponent -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponentParams -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationComponent +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponent import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponentParams import dagger.assisted.Assisted @@ -93,7 +93,7 @@ internal class DefaultNFTSendComponent @AssistedInject constructor( activeComponent.updateState(model.uiState.value) } } - is SendDestinationComponent -> { + is DefaultSendDestinationComponent -> { analyticsEventHandler.send( CommonSendAnalyticEvents.AddressScreenOpened(categoryName = analyticsCategoryName), ) @@ -132,7 +132,7 @@ internal class DefaultNFTSendComponent @AssistedInject constructor( private fun getDestinationComponent( factoryContext: AppComponentContext, route: CommonSendRoute, - ): SendDestinationComponent = SendDestinationComponent( + ): DefaultSendDestinationComponent = DefaultSendDestinationComponent( appComponentContext = factoryContext, params = SendDestinationComponentParams.DestinationParams( state = model.uiState.value.destinationUM, diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/analytics/NFTSendAnalyticHelper.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/analytics/NFTSendAnalyticHelper.kt index 18f53956d9..f19c77aec4 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/analytics/NFTSendAnalyticHelper.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/analytics/NFTSendAnalyticHelper.kt @@ -6,8 +6,8 @@ import com.tangem.core.analytics.models.Basic import com.tangem.core.decompose.di.ModelScoped import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.features.send.v2.sendnft.ui.state.NFTSendUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationTextFieldUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationTextFieldUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeSelectorUM import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeUM import javax.inject.Inject diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/NFTSendConfirmComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/NFTSendConfirmComponent.kt index 8eb01e8547..accee844fb 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/NFTSendConfirmComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/NFTSendConfirmComponent.kt @@ -18,13 +18,13 @@ import com.tangem.domain.wallets.models.UserWallet import com.tangem.features.nft.component.NFTDetailsBlockComponent import com.tangem.features.send.v2.api.SendNotificationsComponent import com.tangem.features.send.v2.common.CommonSendRoute -import com.tangem.features.send.v2.common.PredefinedValues +import com.tangem.features.send.v2.api.entity.PredefinedValues import com.tangem.features.send.v2.common.ui.state.ConfirmUM import com.tangem.features.send.v2.sendnft.confirm.model.NFTSendConfirmModel import com.tangem.features.send.v2.sendnft.confirm.ui.NFTSendConfirmContent import com.tangem.features.send.v2.sendnft.ui.state.NFTSendUM -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationBlockComponent -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponentParams.DestinationBlockParams +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationBlockComponent +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams.DestinationBlockParams import com.tangem.features.send.v2.subcomponents.fee.SendFeeBlockComponent import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponentParams import com.tangem.features.send.v2.subcomponents.notifications.DefaultSendNotificationsComponent @@ -42,7 +42,7 @@ internal class NFTSendConfirmComponent( private val blockClickEnableFlow = MutableStateFlow(false) private val destinationBlockComponent = - SendDestinationBlockComponent( + DefaultSendDestinationBlockComponent( appComponentContext = child("NFTSendConfirmDestinationBlock"), params = DestinationBlockParams( state = model.uiState.value.destinationUM, diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/model/NFTSendConfirmModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/model/NFTSendConfirmModel.kt index e0c6b167d7..fb152c1b84 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/model/NFTSendConfirmModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/model/NFTSendConfirmModel.kt @@ -4,6 +4,8 @@ import android.os.SystemClock import arrow.core.getOrElse import com.tangem.blockchain.common.TransactionData import com.tangem.common.routing.AppRouter +import com.tangem.common.ui.navigationButtons.NavigationButton +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model @@ -27,22 +29,20 @@ import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase import com.tangem.domain.wallets.models.requireColdWallet import com.tangem.features.nft.entity.NFTSendSuccessTrigger import com.tangem.features.send.v2.api.SendNotificationsComponent.Params.NotificationData +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.common.CommonSendRoute import com.tangem.features.send.v2.common.SendBalanceUpdater import com.tangem.features.send.v2.common.SendConfirmAlertFactory import com.tangem.features.send.v2.common.analytics.CommonSendAnalyticEvents import com.tangem.features.send.v2.common.analytics.CommonSendAnalyticEvents.SendScreenSource import com.tangem.features.send.v2.common.ui.state.ConfirmUM -import com.tangem.features.send.v2.common.ui.state.NavigationUM import com.tangem.features.send.v2.impl.R -import com.tangem.features.send.v2.send.ui.state.ButtonsUM import com.tangem.features.send.v2.sendnft.analytics.NFTSendAnalyticHelper import com.tangem.features.send.v2.sendnft.confirm.NFTSendConfirmComponent import com.tangem.features.send.v2.sendnft.confirm.model.transformers.NFTSendConfirmInitialStateTransformer import com.tangem.features.send.v2.sendnft.confirm.model.transformers.NFTSendConfirmSendingStateTransformer import com.tangem.features.send.v2.sendnft.confirm.model.transformers.NFTSendConfirmationNotificationsTransformer import com.tangem.features.send.v2.sendnft.ui.state.NFTSendUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.SendFeeCheckReloadListener import com.tangem.features.send.v2.subcomponents.fee.SendFeeCheckReloadTrigger import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeSelectorUM @@ -394,8 +394,8 @@ internal class NFTSendConfirmModel @Inject constructor( ) appRouter.pop() }, - primaryButton = ButtonsUM.PrimaryButtonUM( - text = when (confirmUM) { + primaryButton = NavigationButton( + textReference = when (confirmUM) { is ConfirmUM.Success -> resourceReference(R.string.common_close) is ConfirmUM.Content -> if (confirmUM.isSending) { resourceReference(R.string.send_sending) @@ -404,7 +404,7 @@ internal class NFTSendConfirmModel @Inject constructor( } else -> resourceReference(R.string.common_send) }, - iconResId = R.drawable.ic_tangem_24.takeIf { isReadyToSend }, + iconRes = R.drawable.ic_tangem_24.takeIf { isReadyToSend }, isEnabled = confirmUM.isPrimaryButtonEnabled, isHapticClick = isReadyToSend, onClick = { @@ -412,14 +412,17 @@ internal class NFTSendConfirmModel @Inject constructor( }, ), prevButton = null, - secondaryPairButtonsUM = ButtonsUM.SecondaryPairButtonsUM( - leftText = resourceReference(R.string.common_explore), - leftIconResId = R.drawable.ic_web_24, - onLeftClick = ::onExploreClick, - rightText = resourceReference(R.string.common_share), - rightIconResId = R.drawable.ic_share_24, - onRightClick = ::onShareClick, - ).takeIf { confirmUM is ConfirmUM.Success }, + secondaryPairButtonsUM = ( + NavigationButton( + textReference = resourceReference(R.string.common_explore), + iconRes = R.drawable.ic_web_24, + onClick = ::onExploreClick, + ) to NavigationButton( + textReference = resourceReference(R.string.common_share), + iconRes = R.drawable.ic_share_24, + onClick = ::onShareClick, + ) + ).takeIf { confirmUM is ConfirmUM.Success }, ), ), ) diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/ui/NFTSendConfirmContent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/ui/NFTSendConfirmContent.kt index 22e963cff2..9dbb04eb6d 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/ui/NFTSendConfirmContent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/confirm/ui/NFTSendConfirmContent.kt @@ -25,7 +25,7 @@ import com.tangem.features.send.v2.common.ui.state.ConfirmUM import com.tangem.features.send.v2.common.ui.tapHelp import com.tangem.features.send.v2.impl.R import com.tangem.features.send.v2.sendnft.ui.state.NFTSendUM -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationBlockComponent +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationBlockComponent import com.tangem.features.send.v2.subcomponents.fee.SendFeeBlockComponent import com.tangem.features.send.v2.subcomponents.notifications import com.tangem.features.send.v2.subcomponents.notifications.DefaultSendNotificationsComponent @@ -37,7 +37,7 @@ private const val BLOCKS_KEY = "BLOCKS_KEY" @Composable internal fun NFTSendConfirmContent( nftSendUM: NFTSendUM, - destinationBlockComponent: SendDestinationBlockComponent, + destinationBlockComponent: DefaultSendDestinationBlockComponent, nftDetailsBlockComponent: NFTDetailsBlockComponent, feeBlockComponent: SendFeeBlockComponent, notificationsComponent: DefaultSendNotificationsComponent, @@ -76,7 +76,7 @@ internal fun NFTSendConfirmContent( private fun LazyListScope.blocks( nftSendUM: NFTSendUM, - destinationBlockComponent: SendDestinationBlockComponent, + destinationBlockComponent: DefaultSendDestinationBlockComponent, nftDetailsBlockComponent: NFTDetailsBlockComponent, feeBlockComponent: SendFeeBlockComponent, ) { diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/model/NFTSendModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/model/NFTSendModel.kt index 52919729c3..8944009d6b 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/model/NFTSendModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/model/NFTSendModel.kt @@ -5,6 +5,7 @@ import arrow.core.Either import arrow.core.getOrElse import arrow.core.left import com.tangem.blockchain.common.transaction.TransactionFee +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model import com.tangem.core.decompose.model.ParamsContainer @@ -30,14 +31,13 @@ import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.requireColdWallet import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.features.send.v2.api.NFTSendComponent +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponent +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.common.CommonSendRoute import com.tangem.features.send.v2.common.SendConfirmAlertFactory import com.tangem.features.send.v2.common.ui.state.ConfirmUM -import com.tangem.features.send.v2.common.ui.state.NavigationUM import com.tangem.features.send.v2.sendnft.confirm.NFTSendConfirmComponent import com.tangem.features.send.v2.sendnft.ui.state.NFTSendUM -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponent -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponent import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeUM import com.tangem.utils.coroutines.CoroutineDispatcherProvider diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/ui/state/NFTSendUM.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/ui/state/NFTSendUM.kt index 6d119d46cf..fb48eed197 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/ui/state/NFTSendUM.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/sendnft/ui/state/NFTSendUM.kt @@ -1,8 +1,8 @@ package com.tangem.features.send.v2.sendnft.ui.state +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.features.send.v2.common.ui.state.ConfirmUM -import com.tangem.features.send.v2.common.ui.state.NavigationUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeUM internal data class NFTSendUM( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountBlockComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountBlockComponent.kt index fe6e07f89a..09397bdece 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountBlockComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountBlockComponent.kt @@ -10,7 +10,7 @@ import com.tangem.common.ui.amountScreen.ui.AmountBlockV2 import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel import com.tangem.core.ui.decompose.ComposableContentComponent -import com.tangem.features.send.v2.common.PredefinedValues +import com.tangem.features.send.v2.api.entity.PredefinedValues import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponentParams.AmountBlockParams import com.tangem.features.send.v2.subcomponents.amount.model.SendAmountModel import kotlinx.coroutines.flow.launchIn diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt index b2a1c6a264..bf7c0f1683 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt @@ -7,11 +7,11 @@ import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.tangem.common.ui.amountScreen.AmountScreenContent import com.tangem.common.ui.amountScreen.models.AmountState +import com.tangem.common.ui.navigationButtons.NavigationModelCallback import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel import com.tangem.core.ui.decompose.ComposableContentComponent import com.tangem.core.ui.res.TangemTheme -import com.tangem.features.send.v2.common.SendNavigationModelCallback import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponentParams.AmountParams import com.tangem.features.send.v2.subcomponents.amount.model.SendAmountModel @@ -37,7 +37,7 @@ internal class SendAmountComponent( ) } - interface ModelCallback : SendNavigationModelCallback { + interface ModelCallback : NavigationModelCallback { fun onAmountResult(amountUM: AmountState, isResetPredefined: Boolean) } } \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponentParams.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponentParams.kt index 419dc6ced6..e13561e155 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponentParams.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponentParams.kt @@ -7,7 +7,7 @@ import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId import com.tangem.features.send.v2.common.CommonSendRoute -import com.tangem.features.send.v2.common.PredefinedValues +import com.tangem.features.send.v2.api.entity.PredefinedValues import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponent.ModelCallback import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt index dc008c3246..383cb1f3eb 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt @@ -4,13 +4,14 @@ import androidx.compose.runtime.Stable import arrow.core.getOrElse import com.tangem.common.ui.amountScreen.AmountScreenClickIntents import com.tangem.common.ui.amountScreen.converters.* +import com.tangem.common.ui.amountScreen.converters.field.AmountBoundaryUpdateTransformer import com.tangem.common.ui.amountScreen.converters.field.AmountFieldChangeTransformer import com.tangem.common.ui.amountScreen.converters.field.AmountFieldSetMaxAmountTransformer -import com.tangem.common.ui.amountScreen.converters.field.AmountBoundaryUpdateTransformer -import com.tangem.common.ui.amountScreen.converters.MaxEnterAmountConverter import com.tangem.common.ui.amountScreen.models.AmountParameters import com.tangem.common.ui.amountScreen.models.AmountState import com.tangem.common.ui.amountScreen.models.EnterAmountBoundary +import com.tangem.common.ui.navigationButtons.NavigationButton +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model @@ -26,10 +27,8 @@ import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.features.send.v2.api.SendFeatureToggles -import com.tangem.features.send.v2.common.PredefinedValues -import com.tangem.features.send.v2.common.ui.state.NavigationUM +import com.tangem.features.send.v2.api.entity.PredefinedValues import com.tangem.features.send.v2.impl.R -import com.tangem.features.send.v2.send.ui.state.ButtonsUM import com.tangem.features.send.v2.subcomponents.amount.SendAmountComponentParams import com.tangem.features.send.v2.subcomponents.amount.SendAmountReduceListener import com.tangem.features.send.v2.subcomponents.amount.SendAmountUpdateQRListener @@ -297,8 +296,8 @@ internal class SendAmountModel @Inject constructor( R.drawable.ic_close_24 }, backIconClick = { params.onBackClick() }, - primaryButton = ButtonsUM.PrimaryButtonUM( - text = if (route.isEditMode) { + primaryButton = NavigationButton( + textReference = if (route.isEditMode) { resourceReference(R.string.common_continue) } else { resourceReference(R.string.common_next) @@ -312,9 +311,9 @@ internal class SendAmountModel @Inject constructor( prevButton = if (params.isRedesignEnabled) { null } else { - ButtonsUM.PrimaryButtonUM( - text = TextReference.EMPTY, - iconResId = R.drawable.ic_back_24, + NavigationButton( + textReference = TextReference.EMPTY, + iconRes = R.drawable.ic_back_24, isEnabled = true, onClick = { saveResult() diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationBlockComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/DefaultSendDestinationBlockComponent.kt similarity index 59% rename from features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationBlockComponent.kt rename to features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/DefaultSendDestinationBlockComponent.kt index f95975b12b..afd4740c34 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationBlockComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/DefaultSendDestinationBlockComponent.kt @@ -6,20 +6,24 @@ import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel -import com.tangem.core.ui.decompose.ComposableContentComponent -import com.tangem.features.send.v2.common.PredefinedValues +import com.tangem.features.send.v2.api.entity.PredefinedValues +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationBlockComponent +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.destination.model.SendDestinationModel import com.tangem.features.send.v2.subcomponents.destination.ui.DestinationBlock -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -internal class SendDestinationBlockComponent( - appComponentContext: AppComponentContext, - private val params: SendDestinationComponentParams.DestinationBlockParams, +internal class DefaultSendDestinationBlockComponent @AssistedInject constructor( + @Assisted appComponentContext: AppComponentContext, + @Assisted private val params: SendDestinationComponentParams.DestinationBlockParams, val onClick: () -> Unit, val onResult: (DestinationUM) -> Unit, -) : ComposableContentComponent, AppComponentContext by appComponentContext { +) : SendDestinationBlockComponent, AppComponentContext by appComponentContext { private val model: SendDestinationModel = getOrCreateModel(params = params) @@ -44,4 +48,12 @@ internal class SendDestinationBlockComponent( onClick = onClick, ) } + + @AssistedFactory + interface Factory : SendDestinationBlockComponent.Factory { + override fun create( + context: AppComponentContext, + params: SendDestinationComponentParams.DestinationBlockParams, + ): DefaultSendDestinationBlockComponent + } } \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/DefaultSendDestinationComponent.kt similarity index 52% rename from features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationComponent.kt rename to features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/DefaultSendDestinationComponent.kt index f1b52451d8..aee0913947 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/SendDestinationComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/DefaultSendDestinationComponent.kt @@ -6,16 +6,19 @@ import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel -import com.tangem.core.ui.decompose.ComposableContentComponent -import com.tangem.features.send.v2.common.SendNavigationModelCallback +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponent +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.destination.model.SendDestinationModel import com.tangem.features.send.v2.subcomponents.destination.ui.SendDestinationContent -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject -internal class SendDestinationComponent( - appComponentContext: AppComponentContext, - private val params: SendDestinationComponentParams.DestinationParams, -) : ComposableContentComponent, AppComponentContext by appComponentContext { +internal class DefaultSendDestinationComponent @AssistedInject constructor( + @Assisted appComponentContext: AppComponentContext, + @Assisted private val params: SendDestinationComponentParams.DestinationParams, +) : SendDestinationComponent, AppComponentContext by appComponentContext { private val model: SendDestinationModel = getOrCreateModel(params = params) @@ -29,7 +32,11 @@ internal class SendDestinationComponent( SendDestinationContent(state = state, clickIntents = model, isBalanceHidden = isBalanceHidden) } - interface ModelCallback : SendNavigationModelCallback { - fun onDestinationResult(destinationUM: DestinationUM) + @AssistedFactory + interface Factory : SendDestinationComponent.Factory { + override fun create( + context: AppComponentContext, + params: SendDestinationComponentParams.DestinationParams, + ): DefaultSendDestinationComponent } } \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/di/SendDestinationModule.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/di/SendDestinationModule.kt new file mode 100644 index 0000000000..a95d5d43ab --- /dev/null +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/di/SendDestinationModule.kt @@ -0,0 +1,27 @@ +package com.tangem.features.send.v2.subcomponents.destination.di + +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationBlockComponent +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponent +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationBlockComponent +import com.tangem.features.send.v2.subcomponents.destination.DefaultSendDestinationComponent +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal interface SendDestinationModule { + @Singleton + @Binds + fun provideSendDestinationComponentFactory( + impl: DefaultSendDestinationComponent.Factory, + ): SendDestinationComponent.Factory + + @Singleton + @Binds + fun provideSendDestinationBlockComponentFactory( + impl: DefaultSendDestinationBlockComponent.Factory, + ): SendDestinationBlockComponent.Factory +} \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/SendDestinationModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/SendDestinationModel.kt index 2cefea736b..2d3ee4b04c 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/SendDestinationModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/SendDestinationModel.kt @@ -3,6 +3,8 @@ package com.tangem.features.send.v2.subcomponents.destination.model import androidx.compose.runtime.Stable import arrow.core.getOrElse import com.tangem.common.routing.AppRoute +import com.tangem.common.ui.navigationButtons.NavigationButton +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model @@ -25,18 +27,16 @@ import com.tangem.domain.wallets.models.isLocked import com.tangem.domain.wallets.models.isMultiCurrency import com.tangem.domain.wallets.usecase.GetWalletsUseCase import com.tangem.features.send.v2.api.SendFeatureToggles -import com.tangem.features.send.v2.common.PredefinedValues +import com.tangem.features.send.v2.api.entity.PredefinedValues +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams +import com.tangem.features.send.v2.api.subcomponents.destination.SendDestinationComponentParams.DestinationBlockParams +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.common.analytics.CommonSendAnalyticEvents import com.tangem.features.send.v2.common.analytics.CommonSendAnalyticEvents.SendScreenSource -import com.tangem.features.send.v2.common.ui.state.NavigationUM import com.tangem.features.send.v2.impl.R -import com.tangem.features.send.v2.send.ui.state.ButtonsUM -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponentParams -import com.tangem.features.send.v2.subcomponents.destination.SendDestinationComponentParams.DestinationBlockParams import com.tangem.features.send.v2.subcomponents.destination.analytics.EnterAddressSource import com.tangem.features.send.v2.subcomponents.destination.analytics.SendDestinationAnalyticEvents import com.tangem.features.send.v2.subcomponents.destination.model.transformers.* -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationWalletUM import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.utils.coroutines.JobHolder @@ -335,8 +335,8 @@ internal class SendDestinationModel @Inject constructor( } else { ::onQrCodeScanClick }, - primaryButton = ButtonsUM.PrimaryButtonUM( - text = if (route.isEditMode) { + primaryButton = NavigationButton( + textReference = if (route.isEditMode) { resourceReference(R.string.common_continue) } else { resourceReference(R.string.common_next) @@ -347,10 +347,10 @@ internal class SendDestinationModel @Inject constructor( params.onNextClick() }, ), - prevButton = if (isRedesignEnabled) { - ButtonsUM.PrimaryButtonUM( - text = TextReference.EMPTY, - iconResId = R.drawable.ic_back_24, + prevButton = if (!route.isEditMode && isRedesignEnabled) { + NavigationButton( + textReference = TextReference.EMPTY, + iconRes = R.drawable.ic_back_24, isEnabled = true, onClick = { saveResult() diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientHistoryListConverter.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientHistoryListConverter.kt index d4fe87d71e..1b9d4bcbc9 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientHistoryListConverter.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientHistoryListConverter.kt @@ -15,7 +15,7 @@ import com.tangem.features.send.v2.impl.R import com.tangem.features.send.v2.subcomponents.destination.model.transformers.RECENT_DEFAULT_COUNT import com.tangem.features.send.v2.subcomponents.destination.model.transformers.RECENT_KEY_TAG import com.tangem.features.send.v2.subcomponents.destination.model.transformers.emptyListState -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationRecipientListUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationRecipientListUM import com.tangem.utils.converter.Converter import com.tangem.utils.extensions.isZero import kotlinx.collections.immutable.ImmutableList diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt index 1c4d50db95..7eb6244a95 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt @@ -5,7 +5,7 @@ import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.features.send.v2.subcomponents.destination.model.transformers.WALLET_DEFAULT_COUNT import com.tangem.features.send.v2.subcomponents.destination.model.transformers.WALLET_KEY_TAG import com.tangem.features.send.v2.subcomponents.destination.model.transformers.emptyListState -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationRecipientListUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationRecipientListUM import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationWalletUM import com.tangem.utils.converter.Converter import kotlinx.collections.immutable.PersistentList diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/RecentListUtils.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/RecentListUtils.kt index 0083e68d7d..ad2e643f1e 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/RecentListUtils.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/RecentListUtils.kt @@ -1,6 +1,6 @@ package com.tangem.features.send.v2.subcomponents.destination.model.transformers -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationRecipientListUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationRecipientListUM import kotlinx.collections.immutable.toPersistentList internal const val WALLET_DEFAULT_COUNT = 1 diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationAddressTransformer.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationAddressTransformer.kt index e717f65218..0dce046d7a 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationAddressTransformer.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationAddressTransformer.kt @@ -1,6 +1,6 @@ package com.tangem.features.send.v2.subcomponents.destination.model.transformers -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.utils.transformer.Transformer internal class SendDestinationAddressTransformer( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationInitialStateTransformer.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationInitialStateTransformer.kt index 8ad0687969..e2cbe95c33 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationInitialStateTransformer.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationInitialStateTransformer.kt @@ -7,8 +7,8 @@ import com.tangem.core.ui.extensions.resourceReference import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.network.Network import com.tangem.features.send.v2.impl.R -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationTextFieldUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationTextFieldUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.utils.transformer.Transformer internal class SendDestinationInitialStateTransformer( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationMemoTransformer.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationMemoTransformer.kt index 7a7883fcd8..83f526462c 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationMemoTransformer.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationMemoTransformer.kt @@ -1,6 +1,6 @@ package com.tangem.features.send.v2.subcomponents.destination.model.transformers -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.utils.transformer.Transformer internal class SendDestinationMemoTransformer( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationPredefinedStateTransformer.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationPredefinedStateTransformer.kt index 6339e4ba75..94ba50e2ab 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationPredefinedStateTransformer.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationPredefinedStateTransformer.kt @@ -1,6 +1,6 @@ package com.tangem.features.send.v2.subcomponents.destination.model.transformers -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.utils.transformer.Transformer internal class SendDestinationPredefinedStateTransformer( diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationRecentListTransformer.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationRecentListTransformer.kt index 821e3868c0..90dbda803c 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationRecentListTransformer.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationRecentListTransformer.kt @@ -4,7 +4,7 @@ import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.network.TxInfo import com.tangem.features.send.v2.subcomponents.destination.model.converters.SendRecipientHistoryListConverter import com.tangem.features.send.v2.subcomponents.destination.model.converters.SendRecipientWalletListConverter -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationWalletUM import com.tangem.utils.transformer.Transformer diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationResultTransformer.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationResultTransformer.kt index b5a3177c5f..3ae7039b38 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationResultTransformer.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationResultTransformer.kt @@ -6,8 +6,8 @@ import com.tangem.core.ui.extensions.resourceReference import com.tangem.domain.transaction.error.AddressValidation import com.tangem.domain.transaction.error.AddressValidationResult import com.tangem.domain.transaction.error.ValidateMemoError +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.features.send.v2.impl.R -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM import com.tangem.utils.transformer.Transformer import kotlinx.collections.immutable.toPersistentList @@ -34,6 +34,7 @@ internal class SendDestinationValidationResultTransformer( val blockchainAddress = (addressValidationResult.getOrNull() as? AddressValidation.Success.ValidNamedAddress)?.blockchainAddress + val memoField = state.memoTextField return state.copy( isValidating = false, isPrimaryButtonEnabled = isValidAddress && isValidMemo, @@ -42,9 +43,9 @@ internal class SendDestinationValidationResultTransformer( isError = state.addressTextField.value.isNotEmpty() && !isValidAddress, blockchainAddress = blockchainAddress, ), - memoTextField = state.memoTextField?.copy( - value = state.memoTextField.value.takeIf { !shouldDisableMemo }.orEmpty(), - isError = state.memoTextField.value.isNotEmpty() && !isValidMemo, + memoTextField = memoField?.copy( + value = memoField.value.takeIf { !shouldDisableMemo }.orEmpty(), + isError = memoField.value.isNotEmpty() && !isValidMemo, isEnabled = !shouldDisableMemo, ), recent = state.recent.map { recent -> diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationStartedTransformer.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationStartedTransformer.kt index bc2354f57f..6bc6d5a3bf 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationStartedTransformer.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/transformers/SendDestinationValidationStartedTransformer.kt @@ -1,6 +1,6 @@ package com.tangem.features.send.v2.subcomponents.destination.model.transformers -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import com.tangem.utils.transformer.Transformer internal object SendDestinationValidationStartedTransformer : Transformer { diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/DestinationBlock.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/DestinationBlock.kt index 3debd43e2f..bb84ed1e1e 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/DestinationBlock.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/DestinationBlock.kt @@ -22,9 +22,9 @@ import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview import com.tangem.features.send.v2.impl.R -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationRecipientListUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationTextFieldUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationRecipientListUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationTextFieldUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import kotlinx.collections.immutable.toImmutableList @Composable diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt index 1014976ae1..31966f7310 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/SendDestinationContent.kt @@ -28,9 +28,9 @@ import com.tangem.core.ui.res.TangemTheme import com.tangem.features.send.v2.impl.R import com.tangem.features.send.v2.subcomponents.destination.analytics.EnterAddressSource import com.tangem.features.send.v2.subcomponents.destination.model.SendDestinationClickIntents -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationRecipientListUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationTextFieldUM -import com.tangem.features.send.v2.subcomponents.destination.ui.state.DestinationUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationRecipientListUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationTextFieldUM +import com.tangem.features.send.v2.api.subcomponents.destination.entity.DestinationUM import kotlinx.collections.immutable.ImmutableList private const val ADDRESS_FIELD_KEY = "ADDRESS_FIELD_KEY" diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/SendFeeComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/SendFeeComponent.kt index bfb3330873..1bb9d9cf1c 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/SendFeeComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/SendFeeComponent.kt @@ -3,10 +3,10 @@ package com.tangem.features.send.v2.subcomponents.fee import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.tangem.common.ui.navigationButtons.NavigationModelCallback import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel import com.tangem.core.ui.decompose.ComposableContentComponent -import com.tangem.features.send.v2.common.SendNavigationModelCallback import com.tangem.features.send.v2.subcomponents.fee.model.SendFeeModel import com.tangem.features.send.v2.subcomponents.fee.ui.SendFeeContent import com.tangem.features.send.v2.subcomponents.fee.ui.state.FeeUM @@ -25,7 +25,7 @@ internal class SendFeeComponent( SendFeeContent(state = state.value, clickIntents = model) } - interface ModelCallback : SendNavigationModelCallback { + interface ModelCallback : NavigationModelCallback { fun onFeeResult(feeUM: FeeUM) } } \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/model/SendFeeModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/model/SendFeeModel.kt index 42b2a1da02..a42481308d 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/model/SendFeeModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/fee/model/SendFeeModel.kt @@ -2,6 +2,8 @@ package com.tangem.features.send.v2.subcomponents.fee.model import androidx.compose.runtime.Stable import com.tangem.blockchain.common.AmountType +import com.tangem.common.ui.navigationButtons.NavigationButton +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model @@ -10,9 +12,7 @@ import com.tangem.core.navigation.url.UrlOpener import com.tangem.core.ui.extensions.resourceReference import com.tangem.domain.transaction.usecase.IsFeeApproximateUseCase import com.tangem.features.send.v2.common.analytics.CommonSendAnalyticEvents.NonceInserted -import com.tangem.features.send.v2.common.ui.state.NavigationUM import com.tangem.features.send.v2.impl.R -import com.tangem.features.send.v2.send.ui.state.ButtonsUM import com.tangem.features.send.v2.subcomponents.fee.SendFeeCheckReloadListener import com.tangem.features.send.v2.subcomponents.fee.SendFeeCheckReloadTrigger import com.tangem.features.send.v2.subcomponents.fee.SendFeeComponentParams @@ -285,8 +285,8 @@ internal class SendFeeModel @Inject constructor( subtitle = null, backIconRes = R.drawable.ic_back_24, backIconClick = params.onNextClick, - primaryButton = ButtonsUM.PrimaryButtonUM( - text = resourceReference(R.string.common_continue), + primaryButton = NavigationButton( + textReference = resourceReference(R.string.common_continue), isEnabled = state.isPrimaryButtonEnabled, onClick = ::onNextClick, ), diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt index 97287393a0..0b561eda91 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt @@ -39,7 +39,7 @@ import com.tangem.features.swap.v2.impl.amount.model.converter.SwapAmountReadySt import com.tangem.features.swap.v2.impl.amount.model.transformers.* import com.tangem.features.swap.v2.impl.chooseprovider.SwapChooseProviderComponent import com.tangem.features.swap.v2.impl.choosetoken.fromSupported.SwapChooseTokenNetworkListener -import com.tangem.features.swap.v2.impl.common.entity.NavigationUM +import com.tangem.common.ui.navigationButtons.NavigationUM import com.tangem.features.swap.v2.impl.common.entity.SwapQuoteUM import com.tangem.features.swap.v2.impl.common.entity.SwapQuoteUM.Content.DifferencePercent import com.tangem.utils.coroutines.CoroutineDispatcherProvider diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/SwapNavigationModelCallback.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/SwapNavigationModelCallback.kt index 1f0c84d635..4462691230 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/SwapNavigationModelCallback.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/common/SwapNavigationModelCallback.kt @@ -1,6 +1,6 @@ package com.tangem.features.swap.v2.impl.common -import com.tangem.features.swap.v2.impl.common.entity.NavigationUM +import com.tangem.common.ui.navigationButtons.NavigationUM internal interface SwapNavigationModelCallback { fun onNavigationResult(navigationUM: NavigationUM)