Updated on 2026-08-14
This commit is contained in:
parent
430eced63a
commit
3c5a7ca00c
7 changed files with 27 additions and 22 deletions
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -148,6 +148,7 @@ internal class DefaultNFTSendComponent @AssistedInject constructor(
|
|||
userWalletId = params.userWalletId,
|
||||
cryptoCurrency = model.cryptoCurrency,
|
||||
callback = model,
|
||||
isInitialRoute = true,
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -402,9 +402,9 @@ internal class NFTSendConfirmModel @Inject constructor(
|
|||
is ConfirmUM.Success -> {
|
||||
modelScope.launch {
|
||||
nftSendSuccessTrigger.triggerSuccessNFTSend()
|
||||
}
|
||||
appRouter.pop()
|
||||
}
|
||||
}
|
||||
is ConfirmUM.Content -> if (confirmUM.isSending) {
|
||||
return@NavigationButton
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,29 +5,37 @@ 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() {
|
||||
modelScope.launch {
|
||||
nftSendSuccessTrigger.triggerSuccessNFTSend()
|
||||
router.pop()
|
||||
analyticsEventHandler.send(
|
||||
CommonSendAnalyticEvents.CloseButtonClicked(
|
||||
categoryName = params.analyticsCategoryName,
|
||||
|
|
@ -37,6 +45,7 @@ internal class NFTSendSuccessModel @Inject constructor(
|
|||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun onExploreClick() {
|
||||
analyticsEventHandler.send(CommonSendAnalyticEvents.ExploreButtonClicked(params.analyticsCategoryName))
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue