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 route: DestinationRoute,
|
||||||
val callback: SendDestinationComponent.ModelCallback,
|
val callback: SendDestinationComponent.ModelCallback,
|
||||||
override val isAllowSelfSend: Boolean = false,
|
override val isAllowSelfSend: Boolean = false,
|
||||||
|
val isInitialRoute: Boolean = false,
|
||||||
) : SendDestinationComponentParams()
|
) : SendDestinationComponentParams()
|
||||||
|
|
||||||
data class DestinationBlockParams(
|
data class DestinationBlockParams(
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,7 @@ internal class DefaultNFTSendComponent @AssistedInject constructor(
|
||||||
userWalletId = params.userWalletId,
|
userWalletId = params.userWalletId,
|
||||||
cryptoCurrency = model.cryptoCurrency,
|
cryptoCurrency = model.cryptoCurrency,
|
||||||
callback = model,
|
callback = model,
|
||||||
|
isInitialRoute = true,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -402,9 +402,9 @@ internal class NFTSendConfirmModel @Inject constructor(
|
||||||
is ConfirmUM.Success -> {
|
is ConfirmUM.Success -> {
|
||||||
modelScope.launch {
|
modelScope.launch {
|
||||||
nftSendSuccessTrigger.triggerSuccessNFTSend()
|
nftSendSuccessTrigger.triggerSuccessNFTSend()
|
||||||
}
|
|
||||||
appRouter.pop()
|
appRouter.pop()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
is ConfirmUM.Content -> if (confirmUM.isSending) {
|
is ConfirmUM.Content -> if (confirmUM.isSending) {
|
||||||
return@NavigationButton
|
return@NavigationButton
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.tangem.features.send.sendnft.success
|
package com.tangem.features.send.sendnft.success
|
||||||
|
|
||||||
|
import androidx.activity.compose.BackHandler
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
|
|
@ -82,10 +83,7 @@ internal class NFTSendSuccessComponent @AssistedInject constructor(
|
||||||
@Composable
|
@Composable
|
||||||
override fun Title() {
|
override fun Title() {
|
||||||
AppBarWithBackButtonAndIcon(
|
AppBarWithBackButtonAndIcon(
|
||||||
onBackClick = {
|
onBackClick = model::onBackClick,
|
||||||
model.onBackClick()
|
|
||||||
router.pop()
|
|
||||||
},
|
|
||||||
backIconRes = R.drawable.ic_close_24,
|
backIconRes = R.drawable.ic_close_24,
|
||||||
backgroundColor = TangemTheme.colors.background.tertiary,
|
backgroundColor = TangemTheme.colors.background.tertiary,
|
||||||
modifier = Modifier.height(TangemTheme.dimens.size56),
|
modifier = Modifier.height(TangemTheme.dimens.size56),
|
||||||
|
|
@ -95,6 +93,7 @@ internal class NFTSendSuccessComponent @AssistedInject constructor(
|
||||||
@Composable
|
@Composable
|
||||||
override fun Content(modifier: Modifier) {
|
override fun Content(modifier: Modifier) {
|
||||||
val state by model.uiState.collectAsStateWithLifecycle()
|
val state by model.uiState.collectAsStateWithLifecycle()
|
||||||
|
BackHandler(onBack = model::onBackClick)
|
||||||
NFTSendSuccessContent(
|
NFTSendSuccessContent(
|
||||||
nftSendUM = state,
|
nftSendUM = state,
|
||||||
destinationBlockComponent = sendDestinationBlockComponent,
|
destinationBlockComponent = sendDestinationBlockComponent,
|
||||||
|
|
@ -127,7 +126,7 @@ internal class NFTSendSuccessComponent @AssistedInject constructor(
|
||||||
)
|
)
|
||||||
PrimaryButton(
|
PrimaryButton(
|
||||||
text = stringResourceSafe(R.string.common_close),
|
text = stringResourceSafe(R.string.common_close),
|
||||||
onClick = router::pop,
|
onClick = model::onBackClick,
|
||||||
modifier = Modifier.fillMaxWidth(),
|
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.di.ModelScoped
|
||||||
import com.tangem.core.decompose.model.Model
|
import com.tangem.core.decompose.model.Model
|
||||||
import com.tangem.core.decompose.model.ParamsContainer
|
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.share.ShareManager
|
||||||
import com.tangem.core.navigation.url.UrlOpener
|
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
|
||||||
import com.tangem.features.send.api.analytics.CommonSendAnalyticEvents.SendScreenSource
|
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.features.send.sendnft.success.NFTSendSuccessComponent
|
||||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@Suppress("LongParameterList")
|
||||||
@Stable
|
@Stable
|
||||||
@ModelScoped
|
@ModelScoped
|
||||||
internal class NFTSendSuccessModel @Inject constructor(
|
internal class NFTSendSuccessModel @Inject constructor(
|
||||||
paramsContainer: ParamsContainer,
|
paramsContainer: ParamsContainer,
|
||||||
override val dispatchers: CoroutineDispatcherProvider,
|
override val dispatchers: CoroutineDispatcherProvider,
|
||||||
|
private val router: Router,
|
||||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||||
private val urlOpener: UrlOpener,
|
private val urlOpener: UrlOpener,
|
||||||
private val shareManager: ShareManager,
|
private val shareManager: ShareManager,
|
||||||
|
private val nftSendSuccessTrigger: NFTSendSuccessTrigger,
|
||||||
) : Model() {
|
) : Model() {
|
||||||
private val params: NFTSendSuccessComponent.Params = paramsContainer.require()
|
private val params: NFTSendSuccessComponent.Params = paramsContainer.require()
|
||||||
|
|
||||||
val uiState = params.nftSendUMFlow
|
val uiState = params.nftSendUMFlow
|
||||||
|
|
||||||
fun onBackClick() {
|
fun onBackClick() {
|
||||||
|
modelScope.launch {
|
||||||
|
nftSendSuccessTrigger.triggerSuccessNFTSend()
|
||||||
|
router.pop()
|
||||||
analyticsEventHandler.send(
|
analyticsEventHandler.send(
|
||||||
CommonSendAnalyticEvents.CloseButtonClicked(
|
CommonSendAnalyticEvents.CloseButtonClicked(
|
||||||
categoryName = params.analyticsCategoryName,
|
categoryName = params.analyticsCategoryName,
|
||||||
|
|
@ -37,6 +45,7 @@ internal class NFTSendSuccessModel @Inject constructor(
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun onExploreClick() {
|
fun onExploreClick() {
|
||||||
analyticsEventHandler.send(CommonSendAnalyticEvents.ExploreButtonClicked(params.analyticsCategoryName))
|
analyticsEventHandler.send(CommonSendAnalyticEvents.ExploreButtonClicked(params.analyticsCategoryName))
|
||||||
|
|
@ -47,8 +56,4 @@ internal class NFTSendSuccessModel @Inject constructor(
|
||||||
analyticsEventHandler.send(CommonSendAnalyticEvents.ShareButtonClicked(params.analyticsCategoryName))
|
analyticsEventHandler.send(CommonSendAnalyticEvents.ShareButtonClicked(params.analyticsCategoryName))
|
||||||
shareManager.shareText(params.txUrl)
|
shareManager.shareText(params.txUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ModelCallback {
|
|
||||||
fun onResult(sendUM: SendUM)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -85,7 +85,7 @@ internal class DefaultSendDestinationComponent @AssistedInject constructor(
|
||||||
AppBarWithBackButtonAndIcon(
|
AppBarWithBackButtonAndIcon(
|
||||||
text = params.title.resolveReference(),
|
text = params.title.resolveReference(),
|
||||||
onBackClick = model::onBackClick,
|
onBackClick = model::onBackClick,
|
||||||
backIconRes = if (params.route.isEditMode) {
|
backIconRes = if (params.route.isEditMode || !params.isInitialRoute) {
|
||||||
R.drawable.ic_back_24
|
R.drawable.ic_back_24
|
||||||
} else {
|
} else {
|
||||||
R.drawable.ic_close_24
|
R.drawable.ic_close_24
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,6 @@ private fun ListItemWithIcon(
|
||||||
)
|
)
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.height(36.dp)
|
|
||||||
.padding(start = 12.dp),
|
.padding(start = 12.dp),
|
||||||
verticalArrangement = Arrangement.SpaceBetween,
|
verticalArrangement = Arrangement.SpaceBetween,
|
||||||
) {
|
) {
|
||||||
|
|
@ -210,7 +209,7 @@ private fun ListItemLoading(modifier: Modifier = Modifier) {
|
||||||
|
|
||||||
// region preview
|
// region preview
|
||||||
@Preview
|
@Preview
|
||||||
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
|
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES, fontScale = 2f)
|
||||||
@Composable
|
@Composable
|
||||||
private fun ListItemWithIconPreview(
|
private fun ListItemWithIconPreview(
|
||||||
@PreviewParameter(ListItemWithIconPreviewProvider::class) config: ListItemWithIconPreviewConfig,
|
@PreviewParameter(ListItemWithIconPreviewProvider::class) config: ListItemWithIconPreviewConfig,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue