diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMidlleware.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMidlleware.kt index 20ed9fe34a..06cc349269 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMidlleware.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMidlleware.kt @@ -19,6 +19,7 @@ import com.tangem.tap.store import com.tangem.tap.tangemSdkManager import kotlinx.coroutines.launch import org.rekotlin.Middleware +import timber.log.Timber class GlobalMiddleware { companion object { @@ -78,11 +79,12 @@ private val globalMiddlewareHandler: Middleware = { dispatch, appState val apiKey = appState()?.globalState?.configManager?.config?.moonPayApiKey if (apiKey != null) { scope.launch { - val moonpayStatus = MoonpayService().getMoonpayStatus(apiKey) - if (moonpayStatus is Result.Success) { - store.dispatchOnMain( - GlobalAction.GetMoonPayStatus.Success(moonpayStatus.data) - ) + val result = MoonpayService().getMoonpayStatus(apiKey) + when (result) { + is Result.Success -> { + store.dispatchOnMain(GlobalAction.GetMoonPayStatus.Success(result.data)) + } + is Result.Failure -> Timber.e(result.error) } } } diff --git a/app/src/main/java/com/tangem/tap/network/moonpay/MoonpayService.kt b/app/src/main/java/com/tangem/tap/network/moonpay/MoonpayService.kt index 5af8eb3395..3e9696700d 100644 --- a/app/src/main/java/com/tangem/tap/network/moonpay/MoonpayService.kt +++ b/app/src/main/java/com/tangem/tap/network/moonpay/MoonpayService.kt @@ -3,32 +3,33 @@ package com.tangem.tap.network.moonpay import com.squareup.moshi.Json import com.squareup.moshi.JsonClass import com.tangem.common.services.Result -import com.tangem.common.services.retryIO +import com.tangem.common.services.performRequest import com.tangem.tap.network.createRetrofitInstance -import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope class MoonpayService { private val moonpayApi: MoonpayApi by lazy { createRetrofitInstance(MoonpayApi.MOOONPAY_BASE_URL) - .create(MoonpayApi::class.java) + .create(MoonpayApi::class.java) } suspend fun getMoonpayStatus(moonpayApiKey: String): Result { return try { coroutineScope { + val userStatusResult = performRequest { moonpayApi.getUserStatus(moonpayApiKey) } + if (userStatusResult is Result.Failure) return@coroutineScope userStatusResult - val userStatusDeferred = - retryIO { async { moonpayApi.getUserStatus(moonpayApiKey) } } - val currenciesDeferred = - retryIO { async { moonpayApi.getCurrencies(moonpayApiKey) } } - val userStatus = userStatusDeferred.await() + val currenciesResult = performRequest { moonpayApi.getCurrencies(moonpayApiKey) } + if (currenciesResult is Result.Failure) return@coroutineScope currenciesResult + + val userStatus = (userStatusResult as Result.Success).data + val currencies = (currenciesResult as Result.Success).data val currenciesToBuy = mutableListOf() val currenciesToSell = mutableListOf() - currenciesDeferred.await().forEach { currencyStatus -> + currencies.forEach { currencyStatus -> if (currencyStatus.type != "crypto" || currencyStatus.isSuspended || !currencyStatus.supportsLiveMode ) {