Updated on 2026-08-14

This commit is contained in:
Tangem 2026-06-19 17:02:56 +04:00
parent d82dbdd1e6
commit 075db99e51
13 changed files with 32 additions and 8 deletions

View file

@ -25,6 +25,7 @@ dependencies {
implementation(projects.domain.express.models)
implementation(projects.domain.express)
implementation(projects.domain.wallets.models)
implementation(projects.domain.txhistory)
api(projects.domain.models)
/** Other */

View file

@ -12,6 +12,7 @@ import com.tangem.domain.express.ExpressRepository
import com.tangem.domain.express.models.ExpressProvider
import com.tangem.domain.express.models.ExpressProviderType
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import com.tangem.utils.extensions.filterIf
import com.tangem.utils.logging.TangemLogger
@ -21,6 +22,7 @@ internal class DefaultExpressRepository(
private val expressHistoryDao: ExpressHistoryDao,
private val appPreferencesStore: AppPreferencesStore,
private val dispatchers: CoroutineDispatcherProvider,
private val txHistoryFeatureToggles: TxHistoryFeatureToggles,
) : ExpressRepository {
override suspend fun getProviders(
@ -37,7 +39,9 @@ internal class DefaultExpressRepository(
),
).getOrThrow()
expressHistoryDao.upsertProviders(providers.map { it.toEntity() })
if (txHistoryFeatureToggles.isNewTxHistoryEnabled) {
expressHistoryDao.upsertProviders(providers.map { it.toEntity() })
}
providers.map(ExpressProviderConverter()::convert)
.filterIf(filterProviderTypes.isNotEmpty()) { it.type in filterProviderTypes }

View file

@ -13,6 +13,7 @@ import com.tangem.datasource.local.txhistory.db.dao.ExpressHistoryDao
import com.tangem.domain.express.ExpressErrorResolver
import com.tangem.domain.express.ExpressRepository
import com.tangem.domain.express.ExpressServiceFetcher
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.Module
import dagger.Provides
@ -40,12 +41,14 @@ internal object ExpressDataModule {
expressHistoryDao: ExpressHistoryDao,
appPreferencesStore: AppPreferencesStore,
dispatchers: CoroutineDispatcherProvider,
txHistoryFeatureToggles: TxHistoryFeatureToggles,
): ExpressRepository {
return DefaultExpressRepository(
tangemExpressApi = tangemExpressApi,
expressHistoryDao = expressHistoryDao,
appPreferencesStore = appPreferencesStore,
dispatchers = dispatchers,
txHistoryFeatureToggles = txHistoryFeatureToggles,
)
}

View file

@ -31,6 +31,7 @@ dependencies {
implementation(projects.domain.appTheme.models)
implementation(projects.domain.models)
implementation(projects.domain.express.models)
implementation(projects.domain.txhistory)
// region DI

View file

@ -26,11 +26,11 @@ import com.tangem.datasource.crypto.DataSignatureVerifier
import com.tangem.datasource.exchangeservice.swap.ExpressUtils
import com.tangem.datasource.local.converter.toEntity
import com.tangem.datasource.local.onramp.countries.OnrampCountriesStore
import com.tangem.datasource.local.onramp.country.OnrampCurrentCountryByIPStore
import com.tangem.datasource.local.onramp.currencies.OnrampCurrenciesStore
import com.tangem.datasource.local.onramp.pairs.OnrampPairsStore
import com.tangem.datasource.local.onramp.paymentmethods.OnrampPaymentMethodsStore
import com.tangem.datasource.local.onramp.quotes.OnrampQuotesStore
import com.tangem.datasource.local.onramp.country.OnrampCurrentCountryByIPStore
import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.datasource.local.preferences.PreferencesKeys
import com.tangem.datasource.local.preferences.utils.getObject
@ -48,6 +48,7 @@ import com.tangem.domain.onramp.model.error.OnrampPairsError
import com.tangem.domain.onramp.model.error.OnrampRedirectError
import com.tangem.domain.onramp.repositories.OnrampRepository
import com.tangem.domain.tokens.model.Amount
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.domain.walletmanager.WalletManagersFacade
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import com.tangem.utils.logging.TangemLogger
@ -75,6 +76,7 @@ internal class DefaultOnrampRepository(
private val walletManagersFacade: WalletManagersFacade,
private val dataSignatureVerifier: DataSignatureVerifier,
private val expressHistoryDao: ExpressHistoryDao,
private val txHistoryFeatureToggles: TxHistoryFeatureToggles,
moshi: Moshi,
) : OnrampRepository {
@ -165,7 +167,9 @@ internal class DefaultOnrampRepository(
)
.getOrThrow()
expressHistoryDao.upsertOnramps(listOf(response.toEntity(ownerAddress = response.payoutAddress)))
if (txHistoryFeatureToggles.isNewTxHistoryEnabled) {
expressHistoryDao.upsertOnramps(listOf(response.toEntity(ownerAddress = response.payoutAddress)))
}
statusConverter.convert(response)
}

View file

@ -30,6 +30,7 @@ import com.tangem.datasource.local.txhistory.db.dao.ExpressHistoryDao
import com.tangem.domain.common.wallets.UserWalletsListRepository
import com.tangem.utils.coroutines.AppCoroutineScope
import com.tangem.domain.onramp.repositories.*
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.domain.walletmanager.WalletManagersFacade
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.Module
@ -58,6 +59,7 @@ internal object OnrampDataModule {
dataSignatureVerifier: DataSignatureVerifier,
onrampCurrentCountryByIPStore: OnrampCurrentCountryByIPStore,
expressHistoryDao: ExpressHistoryDao,
txHistoryFeatureToggles: TxHistoryFeatureToggles,
@NetworkMoshi moshi: Moshi,
): OnrampRepository {
return DefaultOnrampRepository(
@ -74,6 +76,7 @@ internal object OnrampDataModule {
walletManagersFacade = walletManagersFacade,
dataSignatureVerifier = dataSignatureVerifier,
expressHistoryDao = expressHistoryDao,
txHistoryFeatureToggles = txHistoryFeatureToggles,
moshi = moshi,
)
}

View file

@ -1,4 +1,4 @@
package com.tangem.features.txhistory
package com.tangem.domain.txhistory
interface TxHistoryFeatureToggles {
val isSolanaTxHistoryEnabled: Boolean

View file

@ -43,6 +43,7 @@ dependencies {
implementation(projects.domain.transaction.models)
implementation(projects.domain.express.models)
implementation(projects.domain.account.status)
implementation(projects.domain.txhistory)
implementation(projects.libs.blockchainSdk)
implementation(projects.libs.crypto)

View file

@ -29,6 +29,7 @@ import com.tangem.domain.express.models.ExpressOperationType
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.domain.walletmanager.WalletManagersFacade
import com.tangem.feature.swap.converters.*
import com.tangem.feature.swap.domain.api.SwapRepository
@ -55,6 +56,7 @@ internal class DefaultSwapRepository(
private val appPreferencesStore: AppPreferencesStore,
private val rampStateManager: RampStateManager,
private val expressHistoryDao: ExpressHistoryDao,
private val txHistoryFeatureToggles: TxHistoryFeatureToggles,
moshi: Moshi,
) : SwapRepository {
@ -253,7 +255,9 @@ internal class DefaultSwapRepository(
.getOrThrow()
val entity = response.toEntity(ownerAddress = response.fromAddress.orEmpty())
expressHistoryDao.upsertExchanges(listOf(entity))
if (txHistoryFeatureToggles.isNewTxHistoryEnabled) {
expressHistoryDao.upsertExchanges(listOf(entity))
}
exchangeStatusConverter.convert(response)
},

View file

@ -13,6 +13,7 @@ import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.datasource.local.txhistory.db.dao.ExpressHistoryDao
import com.tangem.domain.account.supplier.SingleAccountListSupplier
import com.tangem.domain.exchange.RampStateManager
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.domain.walletmanager.WalletManagersFacade
import com.tangem.feature.swap.DefaultSwapFeedbackRepository
import com.tangem.feature.swap.DefaultSwapRepository
@ -45,6 +46,7 @@ internal class SwapDataModule {
appPreferencesStore: AppPreferencesStore,
rampStateManager: RampStateManager,
expressHistoryDao: ExpressHistoryDao,
txHistoryFeatureToggles: TxHistoryFeatureToggles,
): SwapRepository {
return DefaultSwapRepository(
tangemExpressApi = tangemExpressApi,
@ -56,6 +58,7 @@ internal class SwapDataModule {
appPreferencesStore = appPreferencesStore,
rampStateManager = rampStateManager,
expressHistoryDao = expressHistoryDao,
txHistoryFeatureToggles = txHistoryFeatureToggles,
)
}

View file

@ -2,7 +2,7 @@ package com.tangem.features.txhistory.di
import com.tangem.core.configtoggle.FeatureToggles
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
import com.tangem.features.txhistory.TxHistoryFeatureToggles
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import javax.inject.Inject
internal class DefaultTxHistoryFeatureToggles @Inject constructor(

View file

@ -1,6 +1,6 @@
package com.tangem.features.txhistory.di
import com.tangem.features.txhistory.TxHistoryFeatureToggles
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.features.txhistory.component.DefaultTxHistoryComponent
import com.tangem.features.txhistory.component.DefaultTxHistoryDetailsComponent
import com.tangem.features.txhistory.component.TxHistoryComponent

View file

@ -26,7 +26,7 @@ import com.tangem.domain.txhistory.repository.TxHistoryRepositoryV2
import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase
import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsCountUseCase
import com.tangem.domain.wallets.usecase.GetWalletIconUseCase
import com.tangem.features.txhistory.TxHistoryFeatureToggles
import com.tangem.domain.txhistory.TxHistoryFeatureToggles
import com.tangem.features.txhistory.component.TxHistoryComponent
import com.tangem.features.txhistory.converter.TxHistoryInfoToTransactionItemUMConverter
import com.tangem.features.txhistory.converter.TxHistoryItemToTransactionItemUMConverter