From 186f8f77c49c4990cb75e0de911272b4a2a6f987 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 1 Aug 2024 16:44:47 +0300 Subject: [PATCH] Updated on 2026-08-14 --- features/referral/domain/build.gradle.kts | 1 + .../referral/domain/ReferralInteractorImpl.kt | 13 ++++++++++++- .../feature/referral/domain/errors/ReferralError.kt | 8 ++++++++ .../referral/viewmodels/ReferralViewModel.kt | 4 ++-- .../crypto/models/errors/UserCancelledException.kt | 3 --- 5 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 features/referral/domain/src/main/java/com/tangem/feature/referral/domain/errors/ReferralError.kt delete mode 100644 libs/crypto/src/main/java/com/tangem/lib/crypto/models/errors/UserCancelledException.kt diff --git a/features/referral/domain/build.gradle.kts b/features/referral/domain/build.gradle.kts index 0ae67f2d5f..4206513db7 100644 --- a/features/referral/domain/build.gradle.kts +++ b/features/referral/domain/build.gradle.kts @@ -32,6 +32,7 @@ dependencies { implementation(deps.arrow.core) implementation(deps.jodatime) implementation(deps.timber) + implementation(deps.tangem.card.core) /** DI */ implementation(deps.hilt.android) diff --git a/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt index 36782f4e1d..04e3bb3028 100644 --- a/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt +++ b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/ReferralInteractorImpl.kt @@ -1,10 +1,12 @@ package com.tangem.feature.referral.domain import arrow.core.getOrElse +import com.tangem.common.core.TangemSdkError import com.tangem.domain.card.DerivePublicKeysUseCase import com.tangem.domain.tokens.AddCryptoCurrenciesUseCase import com.tangem.domain.wallets.models.UserWalletId import com.tangem.domain.wallets.usecase.GetUserWalletUseCase +import com.tangem.feature.referral.domain.errors.ReferralError import com.tangem.feature.referral.domain.models.ReferralData import com.tangem.feature.referral.domain.models.TokenData import com.tangem.lib.crypto.UserWalletManager @@ -42,7 +44,7 @@ internal class ReferralInteractorImpl( val cryptoCurrency = repository.getCryptoCurrency(userWalletId = userWallet.walletId, tokenData = tokenData) derivePublicKeysUseCase(userWallet.walletId, listOfNotNull(cryptoCurrency)).getOrElse { Timber.e("Failed to derive public keys: $it") - throw it + throw it.mapToDomainError() } addCryptoCurrenciesUseCase( @@ -67,4 +69,13 @@ internal class ReferralInteractorImpl( tokensForReferral.clear() tokensForReferral.addAll(tokens) } + + private fun Throwable.mapToDomainError(): ReferralError { + if (this !is TangemSdkError) return ReferralError.DataError(this) + return if (this is TangemSdkError.UserCancelled) { + ReferralError.UserCancelledException + } else { + ReferralError.SdkError + } + } } \ No newline at end of file diff --git a/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/errors/ReferralError.kt b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/errors/ReferralError.kt new file mode 100644 index 0000000000..8d78d31fdd --- /dev/null +++ b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/errors/ReferralError.kt @@ -0,0 +1,8 @@ +package com.tangem.feature.referral.domain.errors + +sealed class ReferralError : Exception() { + data object UserCancelledException : ReferralError() + data object SdkError : ReferralError() + + data class DataError(val throwable: Throwable) : ReferralError() +} \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt index 6565947793..236d0c93db 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt +++ b/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt @@ -13,6 +13,7 @@ import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.referral.analytics.ReferralEvents import com.tangem.feature.referral.domain.ReferralInteractor +import com.tangem.feature.referral.domain.errors.ReferralError import com.tangem.feature.referral.domain.models.DiscountType import com.tangem.feature.referral.domain.models.ReferralData import com.tangem.feature.referral.domain.models.ReferralInfo @@ -21,7 +22,6 @@ import com.tangem.feature.referral.models.ReferralStateHolder import com.tangem.feature.referral.models.ReferralStateHolder.ErrorSnackbar import com.tangem.feature.referral.models.ReferralStateHolder.ReferralInfoState import com.tangem.feature.referral.router.ReferralRouter -import com.tangem.lib.crypto.models.errors.UserCancelledException import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.utils.coroutines.runCatching import dagger.hilt.android.lifecycle.HiltViewModel @@ -95,7 +95,7 @@ internal class ReferralViewModel @Inject constructor( runCatching(dispatchers.io) { referralInteractor.startReferral(userWalletId) } .onSuccess(::showContent) .onFailure { throwable -> - if (throwable is UserCancelledException) { + if (throwable is ReferralError.UserCancelledException) { lastReferralData?.let { referralData -> showContent(referralData) } diff --git a/libs/crypto/src/main/java/com/tangem/lib/crypto/models/errors/UserCancelledException.kt b/libs/crypto/src/main/java/com/tangem/lib/crypto/models/errors/UserCancelledException.kt deleted file mode 100644 index bdaf360494..0000000000 --- a/libs/crypto/src/main/java/com/tangem/lib/crypto/models/errors/UserCancelledException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.tangem.lib.crypto.models.errors - -class UserCancelledException : Exception() \ No newline at end of file