diff --git a/domain/src/main/java/com/tangem/domain/DomainError.kt b/domain/src/main/java/com/tangem/domain/DomainError.kt index 1f923c0c90..d7b24eccbf 100644 --- a/domain/src/main/java/com/tangem/domain/DomainError.kt +++ b/domain/src/main/java/com/tangem/domain/DomainError.kt @@ -10,19 +10,23 @@ import com.tangem.common.module.ModuleMessage sealed interface DomainModuleMessage : ModuleMessage sealed class DomainError( - override val code: Int, + subCode: Int, override val message: String, override val data: Any?, ) : DomainModuleMessage, ModuleError { + override val code: Int = ERROR_CODE_DOMAIN + subCode companion object { - const val CODE_ADD_CUSTOM_TOKEN = 1000 + // base code used for all error in the module + const val ERROR_CODE_DOMAIN = 10000 + const val ERROR_CODE_ADD_CUSTOM_TOKEN = 100 +// const val CODE_ANY_OTHER = 200..299 } } sealed class AddCustomTokenError( subCode: Int = 0 -) : DomainError(CODE_ADD_CUSTOM_TOKEN + subCode, this::class.java.simpleName, null) { +) : DomainError(ERROR_CODE_ADD_CUSTOM_TOKEN + subCode, this::class.java.simpleName, null) { object FieldIsEmpty : AddCustomTokenError() object FieldIsNotEmpty : AddCustomTokenError() diff --git a/network/src/main/java/com/tangem/network/api/tangemTech/TangemTechService.kt b/network/src/main/java/com/tangem/network/api/tangemTech/TangemTechService.kt index 10c0ceb3cc..ac969a6868 100644 --- a/network/src/main/java/com/tangem/network/api/tangemTech/TangemTechService.kt +++ b/network/src/main/java/com/tangem/network/api/tangemTech/TangemTechService.kt @@ -5,6 +5,8 @@ import com.tangem.common.services.performRequest import com.tangem.network.common.AddHeaderInterceptor import com.tangem.network.common.CacheControlHttpInterceptor import com.tangem.network.common.createRetrofitInstance +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext /** [REDACTED_AUTHOR] @@ -59,22 +61,22 @@ class CoinsRoute : TangemTechRoute { suspend fun prices( currency: String, ids: List - ): Result { - return performRequest { api.coinsPrices(currency, ids) } + ): Result = withContext(Dispatchers.IO) { + performRequest { api.coinsPrices(currency, ids) } } suspend fun checkAddress( contractAddress: String, networkId: String? = null - ): Result { - return performRequest { api.coinsCheckAddress(contractAddress, networkId) } + ): Result = withContext(Dispatchers.IO) { + performRequest { api.coinsCheckAddress(contractAddress, networkId) } } - suspend fun currencies(): Result { - return performRequest { api.coinsCurrencies() } + suspend fun currencies(): Result = withContext(Dispatchers.IO) { + performRequest { api.coinsCurrencies() } } - suspend fun tokens(): Result { - return performRequest { api.coinsTokens() } + suspend fun tokens(): Result = withContext(Dispatchers.IO) { + performRequest { api.coinsTokens() } } } \ No newline at end of file diff --git a/network/src/main/java/com/tangem/network/common/NetworError.kt b/network/src/main/java/com/tangem/network/common/NetworError.kt new file mode 100644 index 0000000000..bdee8a8729 --- /dev/null +++ b/network/src/main/java/com/tangem/network/common/NetworError.kt @@ -0,0 +1,23 @@ +package com.tangem.network.common + +import com.tangem.common.module.ModuleError +import com.tangem.common.module.ModuleMessage + +/** +[REDACTED_AUTHOR] + */ +sealed interface NetworkModuleMessage : ModuleMessage + +sealed class NetworkError( + subCode: Int, + override val message: String, + override val data: Any?, +) : NetworkModuleMessage, ModuleError { + override val code: Int = ERROR_CODE_NETWORK + subCode + + companion object { + // base code used for all error in the module + const val ERROR_CODE_NETWORK = 20000 + // const val CODE_ANY_OTHER = 100..199 + } +} \ No newline at end of file diff --git a/network/src/main/java/com/tangem/network/common/NetworkException.kt b/network/src/main/java/com/tangem/network/common/NetworkException.kt new file mode 100644 index 0000000000..033e2b9b62 --- /dev/null +++ b/network/src/main/java/com/tangem/network/common/NetworkException.kt @@ -0,0 +1,9 @@ +package com.tangem.network.common + +/** +[REDACTED_AUTHOR] + */ +interface NetworkInternalException + +sealed class NetworkException(message: String?) : Throwable(message), NetworkInternalException { +} \ No newline at end of file