Updated on 2026-08-14
This commit is contained in:
parent
52e7b5e58c
commit
27921d8c3a
23 changed files with 674 additions and 497 deletions
|
|
@ -1,6 +1,5 @@
|
|||
package com.tangem.data.earn.datastore
|
||||
|
||||
import arrow.core.Either
|
||||
import com.tangem.datasource.local.datastore.RuntimeStateStore
|
||||
import com.tangem.domain.models.earn.EarnNetworks
|
||||
import javax.inject.Inject
|
||||
|
|
@ -8,6 +7,6 @@ import javax.inject.Singleton
|
|||
|
||||
@Singleton
|
||||
class EarnNetworksStore @Inject constructor() :
|
||||
RuntimeStateStore<EarnNetworks> by RuntimeStateStore(
|
||||
defaultValue = Either.Right(emptyList()),
|
||||
RuntimeStateStore<EarnNetworks?> by RuntimeStateStore(
|
||||
defaultValue = null,
|
||||
)
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package com.tangem.data.earn.datastore
|
||||
|
||||
import arrow.core.Either
|
||||
import com.tangem.datasource.local.datastore.RuntimeStateStore
|
||||
import com.tangem.domain.models.earn.EarnTopToken
|
||||
import javax.inject.Inject
|
||||
|
|
@ -8,6 +7,6 @@ import javax.inject.Singleton
|
|||
|
||||
@Singleton
|
||||
class EarnTopTokensStore @Inject constructor() :
|
||||
RuntimeStateStore<EarnTopToken> by RuntimeStateStore(
|
||||
defaultValue = Either.Right(emptyList()),
|
||||
RuntimeStateStore<EarnTopToken?> by RuntimeStateStore(
|
||||
defaultValue = null,
|
||||
)
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package com.tangem.data.earn.di
|
||||
|
||||
import com.tangem.data.common.currency.CryptoCurrencyFactory
|
||||
import com.tangem.blockchainsdk.utils.ExcludedBlockchains
|
||||
import com.tangem.data.earn.DefaultEarnErrorResolver
|
||||
import com.tangem.data.earn.repository.DefaultEarnRepository
|
||||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.data.earn.datastore.EarnNetworksStore
|
||||
import com.tangem.data.earn.datastore.EarnTopTokensStore
|
||||
import com.tangem.data.earn.repository.DefaultEarnRepository
|
||||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.earn.EarnErrorResolver
|
||||
import com.tangem.domain.earn.repository.EarnRepository
|
||||
|
|
@ -29,19 +29,19 @@ internal object EarnDataModule {
|
|||
tangemTechApi: TangemTechApi,
|
||||
dispatchers: CoroutineDispatcherProvider,
|
||||
userWalletsListRepository: UserWalletsListRepository,
|
||||
cryptoCurrencyFactory: CryptoCurrencyFactory,
|
||||
earnNetworksStore: EarnNetworksStore,
|
||||
earnTopTokensStore: EarnTopTokensStore,
|
||||
earnErrorResolver: EarnErrorResolver,
|
||||
excludedBlockchains: ExcludedBlockchains,
|
||||
): EarnRepository {
|
||||
return DefaultEarnRepository(
|
||||
tangemTechApi = tangemTechApi,
|
||||
dispatchers = dispatchers,
|
||||
userWalletsListRepository = userWalletsListRepository,
|
||||
cryptoCurrencyFactory = cryptoCurrencyFactory,
|
||||
earnNetworksStore = earnNetworksStore,
|
||||
earnTopTokensStore = earnTopTokensStore,
|
||||
earnErrorResolver = earnErrorResolver,
|
||||
excludedBlockchains = excludedBlockchains,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.tangem.data.earn.repository
|
|||
|
||||
import arrow.core.Either
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.blockchainsdk.utils.ExcludedBlockchains
|
||||
import com.tangem.blockchainsdk.utils.fromNetworkId
|
||||
import com.tangem.data.common.currency.CryptoCurrencyFactory
|
||||
import com.tangem.data.earn.converter.EarnTokenConverter
|
||||
|
|
@ -35,12 +36,16 @@ internal class DefaultEarnRepository(
|
|||
private val tangemTechApi: TangemTechApi,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
private val userWalletsListRepository: UserWalletsListRepository,
|
||||
private val cryptoCurrencyFactory: CryptoCurrencyFactory,
|
||||
private val earnNetworksStore: EarnNetworksStore,
|
||||
private val earnTopTokensStore: EarnTopTokensStore,
|
||||
private val earnErrorResolver: EarnErrorResolver,
|
||||
private val excludedBlockchains: ExcludedBlockchains,
|
||||
) : EarnRepository {
|
||||
|
||||
private val cryptoCurrencyFactory: CryptoCurrencyFactory by lazy {
|
||||
CryptoCurrencyFactory(excludedBlockchains = excludedBlockchains)
|
||||
}
|
||||
|
||||
override fun getEarnTokensBatchFlow(context: EarnTokensBatchingContext, batchSize: Int): EarnTokensBatchFlow {
|
||||
val batchFetcher = EarnTokensBatchFetcher(
|
||||
tangemTechApi = tangemTechApi,
|
||||
|
|
@ -73,7 +78,7 @@ internal class DefaultEarnRepository(
|
|||
}
|
||||
}
|
||||
|
||||
override fun observeEarnNetworks(): Flow<EarnNetworks> {
|
||||
override fun observeEarnNetworks(): Flow<EarnNetworks?> {
|
||||
return earnNetworksStore.get()
|
||||
}
|
||||
|
||||
|
|
@ -100,6 +105,7 @@ internal class DefaultEarnRepository(
|
|||
EarnTokenWithCurrency(
|
||||
earnToken = earnToken,
|
||||
cryptoCurrency = cryptoCurrency,
|
||||
networkName = Blockchain.fromNetworkId(dto.networkId)?.fullName.orEmpty(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -110,7 +116,7 @@ internal class DefaultEarnRepository(
|
|||
}
|
||||
}
|
||||
|
||||
override fun observeTopEarnTokens(): Flow<EarnTopToken> {
|
||||
override fun observeTopEarnTokens(): Flow<EarnTopToken?> {
|
||||
return earnTopTokensStore.get()
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +156,7 @@ internal fun createCryptoCurrencyForEarnToken(
|
|||
rawId = CryptoCurrency.RawID(earnToken.token.id),
|
||||
name = earnToken.token.name,
|
||||
symbol = earnToken.token.symbol,
|
||||
decimals = blockchain.decimals(),
|
||||
decimals = earnToken.token.decimalCount ?: blockchain.decimals(),
|
||||
contractAddress = earnToken.token.address,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.tangem.data.earn.repository.batch
|
||||
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.blockchainsdk.utils.fromNetworkId
|
||||
import com.tangem.data.common.currency.CryptoCurrencyFactory
|
||||
import com.tangem.data.earn.converter.EarnTokenConverter
|
||||
import com.tangem.data.earn.repository.DefaultEarnRepository.Companion.FIRST_PAGE
|
||||
|
|
@ -88,6 +90,7 @@ internal class EarnTokensBatchFetcher(
|
|||
EarnTokenWithCurrency(
|
||||
earnToken = earnToken,
|
||||
cryptoCurrency = cryptoCurrency,
|
||||
networkName = Blockchain.fromNetworkId(dto.networkId)?.fullName.orEmpty(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue