Updated on 2026-08-14
This commit is contained in:
parent
fc9db8288d
commit
b6e042b77d
3 changed files with 28 additions and 0 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 ?: "",
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue