From 3c5a7ca00cc132141995cdc8f009c275fa017d72 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 30 Jul 2026 17:20:32 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../SendDestinationComponentParams.kt | 1 + .../send/sendnft/DefaultNFTSendComponent.kt | 1 + .../confirm/model/NFTSendConfirmModel.kt | 2 +- .../success/NFTSendSuccessComponent.kt | 9 +++--- .../success/model/NFTSendSuccessModel.kt | 31 +++++++++++-------- .../DefaultSendDestinationComponent.kt | 2 +- .../destination/ui/ListItemWithIcon.kt | 3 +- 7 files changed, 27 insertions(+), 22 deletions(-) diff --git a/features/send/api/src/main/java/com/tangem/features/send/api/subcomponents/destination/SendDestinationComponentParams.kt b/features/send/api/src/main/java/com/tangem/features/send/api/subcomponents/destination/SendDestinationComponentParams.kt index 7399b00475..0373c8ddaf 100644 --- a/features/send/api/src/main/java/com/tangem/features/send/api/subcomponents/destination/SendDestinationComponentParams.kt +++ b/features/send/api/src/main/java/com/tangem/features/send/api/subcomponents/destination/SendDestinationComponentParams.kt @@ -28,6 +28,7 @@ sealed class SendDestinationComponentParams { val route: DestinationRoute, val callback: SendDestinationComponent.ModelCallback, override val isAllowSelfSend: Boolean = false, + val isInitialRoute: Boolean = false, ) : SendDestinationComponentParams() data class DestinationBlockParams( diff --git a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/DefaultNFTSendComponent.kt b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/DefaultNFTSendComponent.kt index 1ee1ec5f49..5f6209af51 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/DefaultNFTSendComponent.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/DefaultNFTSendComponent.kt @@ -148,6 +148,7 @@ internal class DefaultNFTSendComponent @AssistedInject constructor( userWalletId = params.userWalletId, cryptoCurrency = model.cryptoCurrency, callback = model, + isInitialRoute = true, ), ) diff --git a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/confirm/model/NFTSendConfirmModel.kt b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/confirm/model/NFTSendConfirmModel.kt index 00e660c583..880f2974ed 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/confirm/model/NFTSendConfirmModel.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/confirm/model/NFTSendConfirmModel.kt @@ -402,8 +402,8 @@ internal class NFTSendConfirmModel @Inject constructor( is ConfirmUM.Success -> { modelScope.launch { nftSendSuccessTrigger.triggerSuccessNFTSend() + appRouter.pop() } - appRouter.pop() } is ConfirmUM.Content -> if (confirmUM.isSending) { return@NavigationButton diff --git a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/NFTSendSuccessComponent.kt b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/NFTSendSuccessComponent.kt index 2384aa7724..7a18522395 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/NFTSendSuccessComponent.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/NFTSendSuccessComponent.kt @@ -1,5 +1,6 @@ package com.tangem.features.send.sendnft.success +import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -82,10 +83,7 @@ internal class NFTSendSuccessComponent @AssistedInject constructor( @Composable override fun Title() { AppBarWithBackButtonAndIcon( - onBackClick = { - model.onBackClick() - router.pop() - }, + onBackClick = model::onBackClick, backIconRes = R.drawable.ic_close_24, backgroundColor = TangemTheme.colors.background.tertiary, modifier = Modifier.height(TangemTheme.dimens.size56), @@ -95,6 +93,7 @@ internal class NFTSendSuccessComponent @AssistedInject constructor( @Composable override fun Content(modifier: Modifier) { val state by model.uiState.collectAsStateWithLifecycle() + BackHandler(onBack = model::onBackClick) NFTSendSuccessContent( nftSendUM = state, destinationBlockComponent = sendDestinationBlockComponent, @@ -127,7 +126,7 @@ internal class NFTSendSuccessComponent @AssistedInject constructor( ) PrimaryButton( text = stringResourceSafe(R.string.common_close), - onClick = router::pop, + onClick = model::onBackClick, modifier = Modifier.fillMaxWidth(), ) } diff --git a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/model/NFTSendSuccessModel.kt b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/model/NFTSendSuccessModel.kt index 7ebfaa2317..949b3d456a 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/model/NFTSendSuccessModel.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/sendnft/success/model/NFTSendSuccessModel.kt @@ -5,37 +5,46 @@ import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model import com.tangem.core.decompose.model.ParamsContainer +import com.tangem.core.decompose.navigation.Router import com.tangem.core.navigation.share.ShareManager import com.tangem.core.navigation.url.UrlOpener +import com.tangem.features.nft.entity.NFTSendSuccessTrigger import com.tangem.features.send.api.analytics.CommonSendAnalyticEvents import com.tangem.features.send.api.analytics.CommonSendAnalyticEvents.SendScreenSource -import com.tangem.features.send.send.ui.state.SendUM import com.tangem.features.send.sendnft.success.NFTSendSuccessComponent import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import kotlinx.coroutines.launch import javax.inject.Inject +@Suppress("LongParameterList") @Stable @ModelScoped internal class NFTSendSuccessModel @Inject constructor( paramsContainer: ParamsContainer, override val dispatchers: CoroutineDispatcherProvider, + private val router: Router, private val analyticsEventHandler: AnalyticsEventHandler, private val urlOpener: UrlOpener, private val shareManager: ShareManager, + private val nftSendSuccessTrigger: NFTSendSuccessTrigger, ) : Model() { private val params: NFTSendSuccessComponent.Params = paramsContainer.require() val uiState = params.nftSendUMFlow fun onBackClick() { - analyticsEventHandler.send( - CommonSendAnalyticEvents.CloseButtonClicked( - categoryName = params.analyticsCategoryName, - source = SendScreenSource.Confirm, - isFromSummary = true, - isValid = true, - ), - ) + modelScope.launch { + nftSendSuccessTrigger.triggerSuccessNFTSend() + router.pop() + analyticsEventHandler.send( + CommonSendAnalyticEvents.CloseButtonClicked( + categoryName = params.analyticsCategoryName, + source = SendScreenSource.Confirm, + isFromSummary = true, + isValid = true, + ), + ) + } } fun onExploreClick() { @@ -47,8 +56,4 @@ internal class NFTSendSuccessModel @Inject constructor( analyticsEventHandler.send(CommonSendAnalyticEvents.ShareButtonClicked(params.analyticsCategoryName)) shareManager.shareText(params.txUrl) } - - interface ModelCallback { - fun onResult(sendUM: SendUM) - } } \ No newline at end of file diff --git a/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/DefaultSendDestinationComponent.kt b/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/DefaultSendDestinationComponent.kt index 648d4e5a93..9165d6d71a 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/DefaultSendDestinationComponent.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/DefaultSendDestinationComponent.kt @@ -85,7 +85,7 @@ internal class DefaultSendDestinationComponent @AssistedInject constructor( AppBarWithBackButtonAndIcon( text = params.title.resolveReference(), onBackClick = model::onBackClick, - backIconRes = if (params.route.isEditMode) { + backIconRes = if (params.route.isEditMode || !params.isInitialRoute) { R.drawable.ic_back_24 } else { R.drawable.ic_close_24 diff --git a/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/ui/ListItemWithIcon.kt b/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/ui/ListItemWithIcon.kt index 6b0a029db3..a326acd4ec 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/ui/ListItemWithIcon.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/subcomponents/destination/ui/ListItemWithIcon.kt @@ -118,7 +118,6 @@ private fun ListItemWithIcon( ) Column( modifier = Modifier - .height(36.dp) .padding(start = 12.dp), verticalArrangement = Arrangement.SpaceBetween, ) { @@ -210,7 +209,7 @@ private fun ListItemLoading(modifier: Modifier = Modifier) { // region preview @Preview -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) +@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES, fontScale = 2f) @Composable private fun ListItemWithIconPreview( @PreviewParameter(ListItemWithIconPreviewProvider::class) config: ListItemWithIconPreviewConfig,