Updated on 2026-08-14

This commit is contained in:
Tangem 2024-07-16 17:49:37 +05:00
parent bc414f1e4a
commit b0cb12b56a
12 changed files with 82 additions and 22 deletions

View file

@ -24,14 +24,15 @@ import com.tangem.datasource.local.token.StakingYieldsStore
import com.tangem.domain.core.lce.LceFlow
import com.tangem.domain.core.lce.lceFlow
import com.tangem.domain.staking.model.*
import com.tangem.domain.staking.model.action.EnterAction
import com.tangem.domain.staking.model.action.StakingAction
import com.tangem.domain.staking.model.action.StakingActionCommonType
import com.tangem.domain.staking.model.transaction.StakingGasEstimate
import com.tangem.domain.staking.model.transaction.ActionParams
import com.tangem.domain.staking.model.transaction.StakingGasEstimate
import com.tangem.domain.staking.model.transaction.StakingTransaction
import com.tangem.domain.staking.repositories.StakingRepository
import com.tangem.domain.tokens.model.CryptoCurrency
import com.tangem.domain.tokens.model.CryptoCurrencyAddress
import com.tangem.domain.tokens.model.Network
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.features.staking.api.featuretoggles.StakingFeatureToggles
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
@ -155,10 +156,13 @@ internal class DefaultStakingRepository(
}
}
override suspend fun createEnterAction(params: ActionParams): EnterAction {
override suspend fun createAction(params: ActionParams): StakingAction {
return withContext(dispatchers.io) {
val body = createActionRequestBody(params)
val response = stakeKitApi.createEnterAction(body)
val response = when (params.actionCommonType) {
StakingActionCommonType.ENTER -> stakeKitApi.createEnterAction(body)
StakingActionCommonType.EXIT -> stakeKitApi.createExitAction(body)
}
enterActionResponseConverter.convert(response.getOrThrow())
}
@ -436,6 +440,14 @@ internal class DefaultStakingRepository(
)
}
override fun isStakeMoreAvailable(networkId: Network.ID): Boolean {
val blockchain = Blockchain.fromId(networkId.value)
return when (blockchain) {
Blockchain.Solana -> false
else -> true
}
}
private fun findPrefetchedYield(yields: List<Yield>, currencyId: String, symbol: String): Yield? {
return yields.find { it.token.coinGeckoId == currencyId && it.token.symbol == symbol }
}

View file

@ -2,17 +2,17 @@ package com.tangem.data.staking.converters.action
import com.tangem.data.staking.converters.transaction.StakingTransactionConverter
import com.tangem.datasource.api.stakekit.models.response.EnterActionResponse
import com.tangem.domain.staking.model.action.EnterAction
import com.tangem.domain.staking.model.action.StakingAction
import com.tangem.utils.converter.Converter
class EnterActionResponseConverter(
private val actionStatusConverter: ActionStatusConverter,
private val stakingActionTypeConverter: StakingActionTypeConverter,
private val transactionConverter: StakingTransactionConverter,
) : Converter<EnterActionResponse, EnterAction> {
) : Converter<EnterActionResponse, StakingAction> {
override fun convert(value: EnterActionResponse): EnterAction {
return EnterAction(
override fun convert(value: EnterActionResponse): StakingAction {
return StakingAction(
id = value.id,
integrationId = value.integrationId,
status = actionStatusConverter.convert(value.status),