Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-24 14:03:07 +05:00
parent ba4d0ad4ce
commit 5c5c31dfc0
4 changed files with 22 additions and 0 deletions

View file

@ -1,12 +1,23 @@
package com.tangem.features.walletconnect.transaction.entity.common
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.message.ToastMessage
import kotlinx.coroutines.flow.StateFlow
internal interface WcCommonTransactionModel {
val uiState: StateFlow<WcCommonTransactionUM?>
val messageSender: UiMessageSender
fun dismiss()
fun popBack()
// TODO: [REDACTED_JIRA]
fun showSuccessSignMessage(message: TextReference = stringReference("Successfully signed")) {
messageSender.send(ToastMessage(message = message))
}
}

View file

@ -7,6 +7,7 @@ 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.decompose.ui.UiMessageSender
import com.tangem.core.ui.clipboard.ClipboardManager
import com.tangem.domain.walletconnect.WcRequestUseCaseFactory
import com.tangem.domain.walletconnect.usecase.method.WcAddNetworkUseCase
@ -24,10 +25,12 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import javax.inject.Inject
@Suppress("LongParameterList")
@Stable
@ModelScoped
internal class WcAddNetworkModel @Inject constructor(
paramsContainer: ParamsContainer,
override val messageSender: UiMessageSender,
override val dispatchers: CoroutineDispatcherProvider,
private val router: Router,
private val clipboardManager: ClipboardManager,
@ -83,6 +86,7 @@ internal class WcAddNetworkModel @Inject constructor(
modelScope.launch {
_uiState.update { it?.copy(transaction = it.transaction.copy(isLoading = true)) }
useCase.approve().getOrNull()?.let {
showSuccessSignMessage()
router.pop()
} ?: run {
_uiState.update { it?.copy(transaction = it.transaction.copy(isLoading = false)) }

View file

@ -13,6 +13,7 @@ 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.decompose.ui.UiMessageSender
import com.tangem.core.ui.clipboard.ClipboardManager
import com.tangem.core.ui.extensions.stringReference
import com.tangem.domain.core.lce.Lce
@ -55,6 +56,7 @@ import kotlin.properties.Delegates
@ModelScoped
internal class WcSendTransactionModel @Inject constructor(
paramsContainer: ParamsContainer,
override val messageSender: UiMessageSender,
override val dispatchers: CoroutineDispatcherProvider,
private val feeSelectorReloadTrigger: FeeSelectorReloadTrigger,
private val router: Router,
@ -296,6 +298,7 @@ internal class WcSendTransactionModel @Inject constructor(
)
stackNavigation.pushNew(WcTransactionRoutes.Alert(error))
} else {
showSuccessSignMessage()
router.pop()
}
}

View file

@ -8,6 +8,7 @@ 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.decompose.ui.UiMessageSender
import com.tangem.core.ui.clipboard.ClipboardManager
import com.tangem.domain.walletconnect.WcRequestUseCaseFactory
import com.tangem.domain.walletconnect.usecase.method.WcMessageSignUseCase
@ -29,10 +30,12 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import javax.inject.Inject
@Suppress("LongParameterList")
@Stable
@ModelScoped
internal class WcSignTransactionModel @Inject constructor(
paramsContainer: ParamsContainer,
override val messageSender: UiMessageSender,
override val dispatchers: CoroutineDispatcherProvider,
private val router: Router,
private val clipboardManager: ClipboardManager,
@ -91,6 +94,7 @@ internal class WcSignTransactionModel @Inject constructor(
private fun signingIsDone(signState: WcSignState<*>): Boolean {
(signState.domainStep as? WcSignStep.Result)?.result?.let {
showSuccessSignMessage()
router.pop()
return true
}