Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-20 15:16:20 +03:00
parent 388b0547d6
commit 33ad78415a
8 changed files with 1 additions and 83 deletions

View file

@ -60,6 +60,7 @@ internal class QuotesUnsupportedCurrenciesIdAdapter {
Blockchain.Aurora.toCoinId() to ethCoinId,
Blockchain.Base.toCoinId() to ethCoinId,
Blockchain.Blast.toCoinId() to ethCoinId,
Blockchain.Cyber.toCoinId() to ethCoinId,
)
}
}

View file

@ -1,7 +0,0 @@
package com.tangem.feature.swap.api
/** Feature toggles manager of "swap" feature */
interface SwapFeatureToggleManager {
val isOptimismSwapEnabled: Boolean
}

View file

@ -19,7 +19,6 @@ import com.tangem.datasource.api.express.models.response.ExchangeDataResponseWit
import com.tangem.datasource.api.express.models.response.SwapPair
import com.tangem.datasource.api.express.models.response.SwapPairsWithProviders
import com.tangem.datasource.api.express.models.response.TxDetails
import com.tangem.datasource.api.tangemTech.TangemTechApi
import com.tangem.datasource.crypto.DataSignatureVerifier
import com.tangem.domain.common.util.derivationStyleProvider
import com.tangem.domain.tokens.model.CryptoCurrency
@ -44,7 +43,6 @@ import com.tangem.datasource.api.express.models.request.LeastTokenInfo as Networ
@Suppress("LongParameterList", "LargeClass")
internal class DefaultSwapRepository @Inject constructor(
private val tangemTechApi: TangemTechApi,
private val tangemExpressApi: TangemExpressApi,
private val coroutineDispatcher: CoroutineDispatcherProvider,
private val walletManagersFacade: WalletManagersFacade,
@ -188,29 +186,6 @@ internal class DefaultSwapRepository @Inject constructor(
}
}
override suspend fun getRates(currencyId: String, tokenIds: List<String>): Map<String, Double> {
// workaround cause backend do not return arbitrum and optimism rates
val addedTokens = if (tokenIds.contains(OPTIMISM_ID) || tokenIds.contains(ARBITRUM_ID)) {
tokenIds.toMutableList().apply {
add(ETHEREUM_ID)
}
} else {
tokenIds
}
return withContext(coroutineDispatcher.io) {
val rates = tangemTechApi.getRates(currencyId.lowercase(), addedTokens.joinToString(",")).rates
val ethRate = rates[ETHEREUM_ID]
if (tokenIds.contains(OPTIMISM_ID) || tokenIds.contains(ARBITRUM_ID)) {
rates.toMutableMap().apply {
put(OPTIMISM_ID, ethRate ?: 0.0)
put(ARBITRUM_ID, ethRate ?: 0.0)
}
} else {
rates
}
}
}
override suspend fun findBestQuote(
fromContractAddress: String,
fromNetwork: String,
@ -432,11 +407,4 @@ internal class DefaultSwapRepository @Inject constructor(
DataError.UnknownError
}
}
companion object {
// TODO("get this ids from blockchain enum later")
private const val OPTIMISM_ID = "optimistic-ethereum"
private const val ARBITRUM_ID = "arbitrum-one"
private const val ETHEREUM_ID = "ethereum"
}
}

View file

@ -3,7 +3,6 @@ package com.tangem.feature.swap.di
import com.squareup.moshi.Moshi
import com.tangem.datasource.api.express.TangemExpressApi
import com.tangem.datasource.api.express.models.response.ExpressErrorResponse
import com.tangem.datasource.api.tangemTech.TangemTechApi
import com.tangem.datasource.crypto.DataSignatureVerifier
import com.tangem.datasource.di.NetworkMoshi
import com.tangem.datasource.local.preferences.AppPreferencesStore
@ -28,7 +27,6 @@ internal class SwapDataModule {
@Provides
@Singleton
internal fun provideSwapRepository(
tangemTechApi: TangemTechApi,
tangemExpressApi: TangemExpressApi,
coroutineDispatcher: CoroutineDispatcherProvider,
dataSignature: DataSignatureVerifier,
@ -38,7 +36,6 @@ internal class SwapDataModule {
@NetworkMoshi moshi: Moshi,
): SwapRepository {
return DefaultSwapRepository(
tangemTechApi = tangemTechApi,
tangemExpressApi = tangemExpressApi,
coroutineDispatcher = coroutineDispatcher,
walletManagersFacade = walletManagerFacade,

View file

@ -14,8 +14,6 @@ interface SwapRepository {
/** Express getPairs request variant without providers request */
suspend fun getPairsOnly(initialCurrency: LeastTokenInfo, currencyList: List<CryptoCurrency>): PairsWithProviders
suspend fun getRates(currencyId: String, tokenIds: List<String>): Map<String, Double>
suspend fun getExchangeStatus(txId: String): Either<UnknownError, ExchangeStatusModel>
@Suppress("LongParameterList")

View file

@ -1,21 +0,0 @@
package com.tangem.feature.swap.di
import com.tangem.core.featuretoggle.manager.FeatureTogglesManager
import com.tangem.feature.swap.api.SwapFeatureToggleManager
import com.tangem.feature.swap.toggles.DefaultFeatureTogglesManager
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityRetainedComponent
import dagger.hilt.android.scopes.ActivityRetainedScoped
@Module
@InstallIn(ActivityRetainedComponent::class)
internal object SwapFeatureTogglesManagerModule {
@Provides
@ActivityRetainedScoped
fun provideSwapFeatureTogglesManager(featureTogglesManager: FeatureTogglesManager): SwapFeatureToggleManager {
return DefaultFeatureTogglesManager(featureTogglesManager)
}
}

View file

@ -1,12 +0,0 @@
package com.tangem.feature.swap.toggles
import com.tangem.core.featuretoggle.manager.FeatureTogglesManager
/** Feature toggles manager implementation of "swap" feature */
class DefaultFeatureTogglesManager(
private val featureTogglesManager: FeatureTogglesManager,
) : InnerSwapFeatureTogglesManager {
override val isOptimismSwapEnabled: Boolean
get() = featureTogglesManager.isFeatureEnabled(name = "OPTIMISM_SWAP_FEATURE_ENABLED")
}

View file

@ -1,6 +0,0 @@
package com.tangem.feature.swap.toggles
import com.tangem.feature.swap.api.SwapFeatureToggleManager
/** Feature toggles manager of "swap" feature for internal logic */
internal interface InnerSwapFeatureTogglesManager : SwapFeatureToggleManager