Updated on 2026-08-14
This commit is contained in:
commit
c618132eac
7 changed files with 46 additions and 7 deletions
|
|
@ -151,8 +151,13 @@ sealed class StakingAnalyticsEvent(
|
|||
}
|
||||
}
|
||||
|
||||
data object TransactionError : StakingAnalyticsEvent(
|
||||
data class TransactionError(
|
||||
val errorCode: String,
|
||||
) : StakingAnalyticsEvent(
|
||||
event = "Error - Transaction Rejected",
|
||||
params = mapOf(
|
||||
AnalyticsParam.ERROR_CODE to errorCode,
|
||||
),
|
||||
)
|
||||
|
||||
data class UnitializedAddress(val token: String) : StakingAnalyticsEvent(
|
||||
|
|
|
|||
|
|
@ -18,6 +18,19 @@ sealed class SendTransactionError {
|
|||
|
||||
data class UnknownError(val ex: Exception? = null) : SendTransactionError()
|
||||
|
||||
fun getAnalyticsDescription(): String {
|
||||
return when (this) {
|
||||
is DemoCardError -> "DemoCardError"
|
||||
is DataError -> "DataError"
|
||||
is NetworkError -> "NetworkError: $code"
|
||||
is BlockchainSdkError -> "BlockchainSdkError: $code"
|
||||
is UserCancelledError -> "UserCancelledError"
|
||||
is CreateAccountUnderfunded -> "CreateAccountUnderfunded"
|
||||
is TangemSdkError -> "TangemSdkError: code $code"
|
||||
is UnknownError -> "UnknownError"
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val USER_CANCELLED_ERROR_CODE = 50002
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.tangem.features.send.v2.api.analytics
|
|||
|
||||
import com.tangem.core.analytics.models.AnalyticsEvent
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.BLOCKCHAIN
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.ERROR_CODE
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.SOURCE
|
||||
import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM
|
||||
|
||||
|
|
@ -49,12 +50,14 @@ sealed class CommonSendAnalyticEvents(
|
|||
val categoryName: String,
|
||||
val token: String,
|
||||
val blockchain: String,
|
||||
val errorCode: String,
|
||||
) : CommonSendAnalyticEvents(
|
||||
category = categoryName,
|
||||
event = "Error - Transaction Rejected",
|
||||
params = mapOf(
|
||||
TOKEN_PARAM to token,
|
||||
BLOCKCHAIN to blockchain,
|
||||
ERROR_CODE to errorCode,
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -469,6 +469,7 @@ internal class SendConfirmModel @Inject constructor(
|
|||
categoryName = analyticsCategoryName,
|
||||
token = cryptoCurrency.symbol,
|
||||
blockchain = cryptoCurrency.network.name,
|
||||
errorCode = error.getAnalyticsDescription(),
|
||||
),
|
||||
)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -364,6 +364,7 @@ internal class NFTSendConfirmModel @Inject constructor(
|
|||
categoryName = analyticsCategoryName,
|
||||
token = cryptoCurrency.symbol,
|
||||
blockchain = cryptoCurrency.network.name,
|
||||
errorCode = error.getAnalyticsDescription(),
|
||||
),
|
||||
)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -331,7 +331,11 @@ internal class StakingModel @Inject constructor(
|
|||
updateNotifications(stakingError = stakingFeeError)
|
||||
},
|
||||
onFeeError = { error ->
|
||||
analyticsEventHandler.send(StakingAnalyticsEvent.TransactionError)
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvent.TransactionError(
|
||||
errorCode = "GetFeeError",
|
||||
),
|
||||
)
|
||||
stateController.update(AddStakingErrorTransformer)
|
||||
updateNotifications(error)
|
||||
},
|
||||
|
|
@ -372,7 +376,11 @@ internal class StakingModel @Inject constructor(
|
|||
stateController.update(SetConfirmationStateCompletedTransformer(txUrl, cryptoCurrencyStatus))
|
||||
},
|
||||
onSendError = { error ->
|
||||
analyticsEventHandler.send(StakingAnalyticsEvent.TransactionError)
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvent.TransactionError(
|
||||
errorCode = error.getAnalyticsDescription(),
|
||||
),
|
||||
)
|
||||
stakingEventFactory.createSendTransactionErrorAlert(error)
|
||||
stateController.update(SetConfirmationStateResetAssentTransformer(cryptoCurrencyStatus))
|
||||
},
|
||||
|
|
@ -659,7 +667,11 @@ internal class StakingModel @Inject constructor(
|
|||
).fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error.toString())
|
||||
analyticsEventHandler.send(StakingAnalyticsEvent.TransactionError)
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvent.TransactionError(
|
||||
errorCode = "CreateApprovalTxError",
|
||||
),
|
||||
)
|
||||
stateController.update(
|
||||
SetConfirmationStateAssentApprovalTransformer(
|
||||
appCurrencyProvider = Provider { appCurrency },
|
||||
|
|
@ -684,7 +696,11 @@ internal class StakingModel @Inject constructor(
|
|||
).fold(
|
||||
ifLeft = { error ->
|
||||
Timber.e(error.toString())
|
||||
analyticsEventHandler.send(StakingAnalyticsEvent.TransactionError)
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvent.TransactionError(
|
||||
errorCode = error.getAnalyticsDescription(),
|
||||
),
|
||||
)
|
||||
stateController.update(
|
||||
SetConfirmationStateAssentApprovalTransformer(
|
||||
appCurrencyProvider = Provider { appCurrency },
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ internal class StakingTransactionSender @AssistedInject constructor(
|
|||
onConstructSuccess: (List<StakingTransaction>) -> Unit,
|
||||
onConstructError: (StakingError) -> Unit,
|
||||
onSendSuccess: (String) -> Unit,
|
||||
onSendError: (SendTransactionError?) -> Unit,
|
||||
onSendError: (SendTransactionError) -> Unit,
|
||||
onFeeIncreased: (Fee, Boolean) -> Unit,
|
||||
) {
|
||||
val state = stateController.value
|
||||
|
|
@ -218,7 +218,7 @@ internal class StakingTransactionSender @AssistedInject constructor(
|
|||
private suspend fun sendStakingTransaction(
|
||||
fullTransactionsData: List<FullTransactionData>,
|
||||
onSendSuccess: (txUrl: String) -> Unit,
|
||||
onSendError: (SendTransactionError?) -> Unit,
|
||||
onSendError: (SendTransactionError) -> Unit,
|
||||
) {
|
||||
if (fullTransactionsData.isEmpty()) return
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue