From b1ced989ae29151edab42a89b28125870a95abea Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 23 Oct 2024 14:58:44 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/core/analytics/models/AnalyticsParam.kt | 1 + .../data/staking/DefaultStakingErrorResolver.kt | 2 +- .../converters/error/StakeKitErrorConverter.kt | 6 +++--- .../domain/staking/model/stakekit/StakingError.kt | 2 +- .../impl/analytics/StakingAnalyticsEvents.kt | 11 ++++++++--- .../state/helpers/StakingFeeTransactionLoader.kt | 2 +- .../state/helpers/StakingTransactionSender.kt | 14 +++++++------- .../presentation/viewmodel/StakingViewModel.kt | 8 ++++---- 8 files changed, 26 insertions(+), 20 deletions(-) diff --git a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt index 94637867c0..9600cda393 100644 --- a/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt +++ b/core/analytics/models/src/main/java/com/tangem/core/analytics/models/AnalyticsParam.kt @@ -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" diff --git a/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingErrorResolver.kt b/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingErrorResolver.kt index a991a4e1f6..8568980711 100644 --- a/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingErrorResolver.kt +++ b/data/staking/src/main/java/com/tangem/data/staking/DefaultStakingErrorResolver.kt @@ -13,7 +13,7 @@ internal class DefaultStakingErrorResolver( return if (throwable is ApiResponseError.HttpException) { stakeKitErrorConverter.convert(throwable.errorBody.orEmpty()) } else { - StakingError.UnknownError + StakingError.UnknownError() } } } \ No newline at end of file diff --git a/data/staking/src/main/java/com/tangem/data/staking/converters/error/StakeKitErrorConverter.kt b/data/staking/src/main/java/com/tangem/data/staking/converters/error/StakeKitErrorConverter.kt index 39aef18e1b..8b303f9292 100644 --- a/data/staking/src/main/java/com/tangem/data/staking/converters/error/StakeKitErrorConverter.kt +++ b/data/staking/src/main/java/com/tangem/data/staking/converters/error/StakeKitErrorConverter.kt @@ -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) } } } \ No newline at end of file diff --git a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/StakingError.kt b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/StakingError.kt index 9fc68971f3..b02b33741f 100644 --- a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/StakingError.kt +++ b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/StakingError.kt @@ -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() } \ No newline at end of file diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt index a57023584b..cc612804f3 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/analytics/StakingAnalyticsEvents.kt @@ -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 + }, ), ) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingFeeTransactionLoader.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingFeeTransactionLoader.kt index 33559d6211..cfc9a504be 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingFeeTransactionLoader.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingFeeTransactionLoader.kt @@ -135,7 +135,7 @@ internal class StakingFeeTransactionLoader @AssistedInject constructor( } if (result.isNullOrEmpty()) { - onStakingFeeError(StakingError.UnknownError) + onStakingFeeError(StakingError.UnknownError()) return } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingTransactionSender.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingTransactionSender.kt index f334c448f4..f330139497 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingTransactionSender.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/helpers/StakingTransactionSender.kt @@ -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( diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt index a6a90596ef..93a483ce0a 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt @@ -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)