From 59eeda5a0135799f3f768d6892aaceae0dba2a71 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 8 Jun 2026 14:48:28 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../domain/walletconnect/WcAnalyticEvents.kt | 11 +++++++++++ .../model/WcSendTransactionModel.kt | 18 ++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt index d7a799f3d5..62321d38b8 100644 --- a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt +++ b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt @@ -209,6 +209,17 @@ sealed class WcAnalyticEvents( ), ) + class WcSolanaMultiTxFailure( + rawRequest: WcSdkSessionRequest, + ) : WcAnalyticEvents( + event = "Solana Multi Transaction Failure", + params = mapOf( + AnalyticsParam.DAPP_NAME to rawRequest.dAppMetaData.name, + AnalyticsParam.DAPP_URL to rawRequest.dAppMetaData.url, + AnalyticsParam.METHOD_NAME to rawRequest.request.method, + ), + ) + class ButtonSign( rawRequest: WcSdkSessionRequest, ) : WcAnalyticEvents( diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt index 85ce399ac9..3921c67c53 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt @@ -5,6 +5,7 @@ import arrow.core.Either import arrow.core.Option import arrow.core.none import com.arkivanov.decompose.router.stack.StackNavigation +import com.arkivanov.decompose.router.stack.navigate import com.arkivanov.decompose.router.stack.pop import com.arkivanov.decompose.router.stack.pushNew import com.domain.blockaid.models.dapp.CheckDAppResult @@ -13,6 +14,7 @@ import com.domain.blockaid.models.transaction.ValidationResult import com.tangem.blockchain.common.TransactionData import com.tangem.blockchain.common.transaction.TransactionFee import com.tangem.common.TangemBlogUrlBuilder +import com.tangem.core.analytics.api.AnalyticsErrorHandler import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.Model @@ -84,6 +86,7 @@ internal class WcSendTransactionModel @Inject constructor( private val singleAccountStatusListSupplier: SingleAccountStatusListSupplier, private val notificationsFactory: WcNotificationsFactory, private val analytics: AnalyticsEventHandler, + private val analyticsErrorHandler: AnalyticsErrorHandler, private val urlOpener: UrlOpener, ) : Model(), WcCommonTransactionModel, FeeSelectorModelCallback { @@ -182,12 +185,18 @@ internal class WcSendTransactionModel @Inject constructor( } private fun openMultipleTransaction() { - stackNavigation.pushNew(WcTransactionRoutes.MultipleTransactions) + stackNavigation.navigate { listOf(WcTransactionRoutes.Transaction, WcTransactionRoutes.MultipleTransactions) } } fun onMultiTransactionConfirm() { useCase.sign() - stackNavigation.pushNew(WcTransactionRoutes.TransactionProcess) + stackNavigation.navigate { + listOf( + WcTransactionRoutes.Transaction, + WcTransactionRoutes.MultipleTransactions, + WcTransactionRoutes.TransactionProcess, + ) + } } /** @@ -415,6 +424,11 @@ internal class WcSendTransactionModel @Inject constructor( onDismiss = { cancel(useCase) }, onRetry = { signFromAlert() }, ) + if (useCase is WcListTransactionUseCase) { + analyticsErrorHandler.sendErrorEvent( + event = WcAnalyticEvents.WcSolanaMultiTxFailure(rawRequest = useCase.rawSdkRequest), + ) + } stackNavigation.pushNew(WcTransactionRoutes.Alert(alertError)) false }