Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-09 11:02:33 +05:00
parent ed0b07bc82
commit f4422dd3fb
25 changed files with 274 additions and 115 deletions

View file

@ -1,20 +1,17 @@
package com.tangem.data.onramp
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.data.onramp.converters.error.OnrampErrorConverter
import com.tangem.datasource.api.common.response.ApiResponseError
import com.tangem.domain.onramp.analytics.OnrampAnalyticsEvent
import com.tangem.domain.onramp.model.error.OnrampError
import com.tangem.domain.onramp.model.error.OnrampRedirectError
import com.tangem.domain.onramp.repositories.OnrampErrorResolver
internal class DefaultOnrampErrorResolver(
private val analyticsEventHandler: AnalyticsEventHandler,
private val onrampErrorConverter: OnrampErrorConverter,
) : OnrampErrorResolver {
override fun resolve(throwable: Throwable): OnrampError {
val error = when (throwable) {
return when (throwable) {
is ApiResponseError.HttpException -> {
onrampErrorConverter.convert(throwable.errorBody.orEmpty())
}
@ -24,20 +21,5 @@ internal class DefaultOnrampErrorResolver(
OnrampError.DomainError(throwable.message)
}
}
when (error) {
is OnrampError.AmountError.TooBigError -> analyticsEventHandler.send(OnrampAnalyticsEvent.MaxAmountError)
is OnrampError.AmountError.TooSmallError -> analyticsEventHandler.send(OnrampAnalyticsEvent.MinAmountError)
is OnrampError.DataError -> analyticsEventHandler.send(
OnrampAnalyticsEvent.Errors(
tokenSymbol = "tokenSymbol",
providerName = "providerName",
errorCode = error.code,
),
)
else -> { /* no-op */
}
}
return error
}
}

View file

@ -1,7 +1,6 @@
package com.tangem.data.onramp.di
import com.squareup.moshi.Moshi
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.data.onramp.DefaultOnrampErrorResolver
import com.tangem.data.onramp.DefaultOnrampRepository
import com.tangem.data.onramp.DefaultOnrampTransactionRepository
@ -72,13 +71,9 @@ internal object OnrampDataModule {
@Provides
@Singleton
fun provideOnrampErrorResolver(
@NetworkMoshi moshi: Moshi,
analyticsEventHandler: AnalyticsEventHandler,
): OnrampErrorResolver {
fun provideOnrampErrorResolver(@NetworkMoshi moshi: Moshi): OnrampErrorResolver {
val jsonAdapter = moshi.adapter(ExpressErrorResponse::class.java)
return DefaultOnrampErrorResolver(
analyticsEventHandler,
OnrampErrorConverter(jsonAdapter),
)
}