Updated on 2026-08-14

This commit is contained in:
Tangem 2024-07-18 18:44:57 +03:00
parent fc9db8288d
commit b6e042b77d
3 changed files with 28 additions and 0 deletions

View file

@ -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<String>? = 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,

View file

@ -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 ?: "",

View file

@ -84,6 +84,10 @@ sealed class StakingError {
data object GRTStakingDisabledLedgerLiveError : StakingError()
data class UnavailableDueToGeolocationError(
val tags: List<String>,
) : StakingError()
// endregion
data class DataError(val cause: Throwable) : StakingError()