From b6e042b77d91372d20e954796605972700bee5a9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 18 Jul 2024 18:44:57 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../model/error/StakeKitErrorResponse.kt | 17 +++++++++++++++++ .../converters/error/StakeKitErrorConverter.kt | 7 +++++++ .../tangem/domain/staking/model/StakingError.kt | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/error/StakeKitErrorResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/error/StakeKitErrorResponse.kt index cf62a7d43b..30396de002 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/error/StakeKitErrorResponse.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/error/StakeKitErrorResponse.kt @@ -9,6 +9,18 @@ class StakeKitErrorResponse( val message: StakeKitErrorMessageDTO? = null, @Json(name = "level") val level: String? = null, // unused + + // 403 + @Json(name = "type") + val type: AccessDeniedErrorTypeDTO? = null, + @Json(name = "code") + val code: String? = null, + @Json(name = "countryCode") + val countryCode: String, + @Json(name = "regionCode") + val regionCode: String? = null, + @Json(name = "tags") + val tags: List? = null, ) data class StakeKitErrorDetailsDTO( @@ -20,6 +32,11 @@ data class StakeKitErrorDetailsDTO( val yieldId: String? = null, ) +enum class AccessDeniedErrorTypeDTO { + @Json(name = "GEO_LOCATION") + GEO_LOCATION, +} + enum class StakeKitErrorMessageDTO { @Json(name = "MissingArgumentsError") MISSING_ARGUMENTS_ERROR, 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 30020c0708..eccee22fac 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 @@ -1,6 +1,7 @@ package com.tangem.data.staking.converters.error import com.squareup.moshi.JsonAdapter +import com.tangem.datasource.api.stakekit.models.response.model.error.AccessDeniedErrorTypeDTO import com.tangem.datasource.api.stakekit.models.response.model.error.StakeKitErrorMessageDTO import com.tangem.datasource.api.stakekit.models.response.model.error.StakeKitErrorResponse import com.tangem.domain.staking.model.StakingError @@ -15,6 +16,12 @@ internal class StakeKitErrorConverter( return try { val stakeKitErrorResponse = jsonAdapter.fromJson(value) ?: return StakingError.UnknownError + if (stakeKitErrorResponse.type == AccessDeniedErrorTypeDTO.GEO_LOCATION) { + StakingError.UnavailableDueToGeolocationError( + tags = stakeKitErrorResponse.tags ?: emptyList(), + ) + } + when (stakeKitErrorResponse.message) { StakeKitErrorMessageDTO.MINIMUM_AMOUNT_NOT_REACHED -> StakingError.MinimumAmountNotReachedError( amount = stakeKitErrorResponse.details?.amount ?: "", diff --git a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/StakingError.kt b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/StakingError.kt index 0f1ff03f2b..a604be48ae 100644 --- a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/StakingError.kt +++ b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/StakingError.kt @@ -84,6 +84,10 @@ sealed class StakingError { data object GRTStakingDisabledLedgerLiveError : StakingError() + data class UnavailableDueToGeolocationError( + val tags: List, + ) : StakingError() + // endregion data class DataError(val cause: Throwable) : StakingError()