Updated on 2026-08-14
This commit is contained in:
parent
34a17e2c65
commit
b1ced989ae
8 changed files with 26 additions and 20 deletions
|
|
@ -178,6 +178,7 @@ sealed class AnalyticsParam {
|
|||
const val ERROR_DESCRIPTION = "Error Description"
|
||||
const val ERROR_CODE = "Error Code"
|
||||
const val ERROR_KEY = "Error Key"
|
||||
const val ERROR_TYPE = "Error Type"
|
||||
const val CREATION_TYPE = "Creation type"
|
||||
const val DAPP_NAME = "DApp Name"
|
||||
const val DAPP_URL = "DApp Url"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ internal class DefaultStakingErrorResolver(
|
|||
return if (throwable is ApiResponseError.HttpException) {
|
||||
stakeKitErrorConverter.convert(throwable.errorBody.orEmpty())
|
||||
} else {
|
||||
StakingError.UnknownError
|
||||
StakingError.UnknownError()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -14,7 +14,7 @@ internal class StakeKitErrorConverter(
|
|||
@Suppress("CyclomaticComplexMethod", "LongMethod")
|
||||
override fun convert(value: String): StakingError {
|
||||
return try {
|
||||
val stakeKitErrorResponse = jsonAdapter.fromJson(value) ?: return StakingError.UnknownError
|
||||
val stakeKitErrorResponse = jsonAdapter.fromJson(value) ?: return StakingError.UnknownError(value)
|
||||
|
||||
if (stakeKitErrorResponse.type == AccessDeniedErrorTypeDTO.GEO_LOCATION) {
|
||||
StakingError.UnavailableDueToGeolocationError(
|
||||
|
|
@ -106,10 +106,10 @@ internal class StakeKitErrorConverter(
|
|||
StakingError.GRTStakingDisabledError
|
||||
StakeKitErrorMessageDTO.GRT_STAKING_DISABLED_LEDGER_LIVE_ERROR ->
|
||||
StakingError.GRTStakingDisabledLedgerLiveError
|
||||
else -> StakingError.UnknownError
|
||||
else -> StakingError.UnknownError(value)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
StakingError.UnknownError
|
||||
StakingError.UnknownError(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -92,5 +92,5 @@ sealed class StakingError {
|
|||
|
||||
data class DataError(val cause: Throwable) : StakingError()
|
||||
|
||||
data object UnknownError : StakingError()
|
||||
data class UnknownError(val message: String? = null) : StakingError()
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.tangem.features.staking.impl.analytics
|
|||
|
||||
import com.tangem.core.analytics.models.AnalyticsEvent
|
||||
import com.tangem.core.analytics.models.AnalyticsParam
|
||||
import com.tangem.domain.staking.model.stakekit.StakingError
|
||||
import com.tangem.domain.staking.model.stakekit.action.StakingActionType
|
||||
|
||||
internal sealed class StakingAnalyticsEvents(
|
||||
|
|
@ -147,14 +148,18 @@ internal sealed class StakingAnalyticsEvents(
|
|||
|
||||
data object ButtonExplore : StakingAnalyticsEvents(event = "Button - Explore")
|
||||
|
||||
data class StakingError(
|
||||
data class StakekitError(
|
||||
val token: String,
|
||||
val errorType: String,
|
||||
val stakeKitError: StakingError,
|
||||
) : StakingAnalyticsEvents(
|
||||
event = "Errors",
|
||||
params = mapOf(
|
||||
AnalyticsParam.TOKEN_PARAM to token,
|
||||
"ErrorType" to errorType,
|
||||
AnalyticsParam.ERROR_TYPE to if (stakeKitError is StakingError.UnknownError) {
|
||||
stakeKitError.message ?: "Unknown"
|
||||
} else {
|
||||
stakeKitError.javaClass.simpleName
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ internal class StakingFeeTransactionLoader @AssistedInject constructor(
|
|||
}
|
||||
|
||||
if (result.isNullOrEmpty()) {
|
||||
onStakingFeeError(StakingError.UnknownError)
|
||||
onStakingFeeError(StakingError.UnknownError())
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ internal class StakingTransactionSender @AssistedInject constructor(
|
|||
)
|
||||
|
||||
if (fullTransactionsData.isNullOrEmpty()) {
|
||||
onConstructError(StakingError.UnknownError)
|
||||
onConstructError(StakingError.UnknownError())
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -199,9 +199,9 @@ internal class StakingTransactionSender @AssistedInject constructor(
|
|||
),
|
||||
).getOrElse {
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvents.StakingError(
|
||||
token = state.cryptoCurrencyName,
|
||||
errorType = it.javaClass.simpleName,
|
||||
StakingAnalyticsEvents.StakekitError(
|
||||
token = state.cryptoCurrencySymbol,
|
||||
stakeKitError = it,
|
||||
),
|
||||
)
|
||||
onConstructError(it)
|
||||
|
|
@ -257,9 +257,9 @@ internal class StakingTransactionSender @AssistedInject constructor(
|
|||
)
|
||||
.onLeft { error ->
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvents.StakingError(
|
||||
token = stateController.value.cryptoCurrencyName,
|
||||
errorType = error.javaClass.simpleName,
|
||||
StakingAnalyticsEvents.StakekitError(
|
||||
token = stateController.value.cryptoCurrencySymbol,
|
||||
stakeKitError = error,
|
||||
),
|
||||
)
|
||||
saveUnsubmittedHashUseCase.invoke(
|
||||
|
|
|
|||
|
|
@ -299,9 +299,9 @@ internal class StakingViewModel @Inject constructor(
|
|||
},
|
||||
onStakingFeeError = { error ->
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvents.StakingError(
|
||||
StakingAnalyticsEvents.StakekitError(
|
||||
value.cryptoCurrencySymbol,
|
||||
error.javaClass.simpleName,
|
||||
error,
|
||||
),
|
||||
)
|
||||
stateController.update(AddStakingErrorTransformer())
|
||||
|
|
@ -338,9 +338,9 @@ internal class StakingViewModel @Inject constructor(
|
|||
onConstructError = { error ->
|
||||
Timber.e(error.toString())
|
||||
analyticsEventHandler.send(
|
||||
StakingAnalyticsEvents.StakingError(
|
||||
StakingAnalyticsEvents.StakekitError(
|
||||
token = value.cryptoCurrencySymbol,
|
||||
errorType = error.javaClass.simpleName,
|
||||
stakeKitError = error,
|
||||
),
|
||||
)
|
||||
stakingEventFactory.createStakingErrorAlert(error)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue