Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-22 15:55:09 +05:00
parent 44f7f23a95
commit d6735f937f
11 changed files with 1 additions and 143 deletions

View file

@ -145,18 +145,6 @@ internal object StakingDomainModule {
)
}
@Provides
@Singleton
fun provideIsStakeMoreAvailableUseCase(
stakingRepository: StakingRepository,
stakingErrorResolver: StakingErrorResolver,
): IsStakeMoreAvailableUseCase {
return IsStakeMoreAvailableUseCase(
stakingRepository = stakingRepository,
stakingErrorResolver = stakingErrorResolver,
)
}
@Provides
@Singleton
fun provideIsApproveNeededUseCase(

View file

@ -1,84 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/llTotalContainer"
android:layout_width="match_parent"
android:layout_height="64dp"
android:gravity="center_vertical"
android:orientation="vertical">
<LinearLayout
android:id="@+id/llTotal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="visible">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:text="@string/send_total_label"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvTotalValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:textAllCaps="true"
android:textSize="20sp"
android:textStyle="bold"
tools:text="usd" />
</FrameLayout>
<TextView
android:id="@+id/tvWillBeSentValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="4dp"
android:gravity="end"
android:textColor="@color/text_tertiary"
tools:text="123.29837729 ADA 39487593.109342039402938049 will be sent" />
</LinearLayout>
<FrameLayout
android:id="@+id/flTotalTokenCrypto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<TextView
android:id="@+id/tvTotalTokenCrypto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:text="@string/send_total_label"
android:textColor="@color/text_tertiary"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvTotalTokenCryptoValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:textAllCaps="true"
android:textColor="@color/text_tertiary"
android:textSize="14sp"
android:textStyle="bold"
tools:text="usd" />
</FrameLayout>
</LinearLayout>

View file

@ -556,14 +556,6 @@ internal class DefaultStakingRepository(
}
}
override fun isStakeMoreAvailable(networkId: Network.ID): Boolean {
val blockchain = Blockchain.fromId(networkId.value)
return when (blockchain) {
Blockchain.Solana -> false
else -> true
}
}
override fun getStakingApproval(cryptoCurrency: CryptoCurrency): StakingApproval {
return when (getIntegrationKey(cryptoCurrency.id)) {
Blockchain.Ethereum.id + Blockchain.Polygon.toCoinId() -> {

View file

@ -1,19 +0,0 @@
package com.tangem.domain.staking
import arrow.core.Either
import com.tangem.domain.staking.model.stakekit.StakingError
import com.tangem.domain.staking.repositories.StakingErrorResolver
import com.tangem.domain.staking.repositories.StakingRepository
import com.tangem.domain.tokens.model.Network
class IsStakeMoreAvailableUseCase(
private val stakingRepository: StakingRepository,
private val stakingErrorResolver: StakingErrorResolver,
) {
operator fun invoke(networkId: Network.ID): Either<StakingError, Boolean> {
return Either
.catch { stakingRepository.isStakeMoreAvailable(networkId) }
.mapLeft { stakingErrorResolver.resolve(it) }
}
}

View file

@ -84,9 +84,6 @@ interface StakingRepository {
suspend fun sendUnsubmittedHashes()
/** Returns whether additional staking is possible if there is already active staking */
fun isStakeMoreAvailable(networkId: Network.ID): Boolean
/** Returns staking approval */
fun getStakingApproval(cryptoCurrency: CryptoCurrency): StakingApproval
}

View file

@ -251,7 +251,5 @@ class MockStakingRepository : StakingRepository {
/* no-op */
}
override fun isStakeMoreAvailable(networkId: Network.ID): Boolean = true
override fun getStakingApproval(cryptoCurrency: CryptoCurrency): StakingApproval = StakingApproval.Empty
}

View file

@ -57,7 +57,6 @@ internal sealed class StakingStates {
val aprRange: TextReference,
val onInfoClick: (InfoType) -> Unit,
val yieldBalance: InnerYieldBalanceState,
val isStakeMoreAvailable: Boolean,
) : InitialInfoState()
data class Empty(

View file

@ -52,7 +52,6 @@ internal object InitialStakingStatePreview {
),
onInfoClick = {},
yieldBalance = InnerYieldBalanceState.Empty,
isStakeMoreAvailable = true,
)
val stateWithYield = defaultState.copy(

View file

@ -119,7 +119,6 @@ internal class SetButtonsStateTransformer : Transformer<StakingUiState> {
private fun List<PendingAction>.getSecondaryAction(): PendingAction? = getOrNull(1)
private fun StakingUiState.isButtonsVisible(): Boolean = when (currentStep) {
StakingStep.InitialInfo -> isStakeMoreAvailable()
StakingStep.RewardsValidators -> false
else -> true
}
@ -170,7 +169,7 @@ internal class SetButtonsStateTransformer : Transformer<StakingUiState> {
private fun StakingUiState.onPrimaryClick() {
when (currentStep) {
StakingStep.InitialInfo -> {
val actionType = StakingActionCommonType.ENTER.takeIf { isStakeMoreAvailable() }
val actionType = StakingActionCommonType.ENTER
clickIntents.onAmountValueChange("") // reset amount state
clickIntents.onNextClick(actionType)
}
@ -241,9 +240,4 @@ internal class SetButtonsStateTransformer : Transformer<StakingUiState> {
StakingActionType.UNKNOWN -> TextReference.EMPTY
null -> TextReference.EMPTY
}
private fun StakingUiState.isStakeMoreAvailable(): Boolean {
val initialState = initialInfoState as? StakingStates.InitialInfoState.Data
return initialState?.isStakeMoreAvailable == true || initialState?.yieldBalance is InnerYieldBalanceState.Empty
}
}

View file

@ -33,7 +33,6 @@ import java.math.BigDecimal
internal class SetInitialDataStateTransformer(
private val clickIntents: StakingClickIntents,
private val yield: Yield,
private val isStakeMoreAvailable: Boolean,
private val isApprovalNeeded: Boolean,
private val cryptoCurrencyStatusProvider: Provider<CryptoCurrencyStatus>,
private val userWalletProvider: Provider<UserWallet>,
@ -84,7 +83,6 @@ internal class SetInitialDataStateTransformer(
infoItems = getInfoItems(),
onInfoClick = clickIntents::onInfoClick,
yieldBalance = yieldBalancesConverter.convert(Unit),
isStakeMoreAvailable = isStakeMoreAvailable,
)
}

View file

@ -89,7 +89,6 @@ internal class StakingViewModel @Inject constructor(
private val getExplorerTransactionUrlUseCase: GetExplorerTransactionUrlUseCase,
private val saveUnsubmittedHashUseCase: SaveUnsubmittedHashUseCase,
private val submitHashUseCase: SubmitHashUseCase,
private val isStakeMoreAvailableUseCase: IsStakeMoreAvailableUseCase,
private val stakingYieldBalanceUseCase: FetchStakingYieldBalanceUseCase,
private val updateDelayedNetworkStatusUseCase: UpdateDelayedNetworkStatusUseCase,
private val fetchPendingTransactionsUseCase: FetchPendingTransactionsUseCase,
@ -581,13 +580,10 @@ internal class StakingViewModel @Inject constructor(
setupApprovalNeeded()
val networkId = cryptoCurrencyStatus.currency.network.id
val isStakeMoreAvailable = isStakeMoreAvailableUseCase(networkId)
stateController.update(
transformer = SetInitialDataStateTransformer(
clickIntents = this@StakingViewModel,
yield = yield,
isStakeMoreAvailable = isStakeMoreAvailable.getOrElse { false },
isApprovalNeeded = stakingApproval is StakingApproval.Needed,
cryptoCurrencyStatusProvider = Provider { cryptoCurrencyStatus },
userWalletProvider = Provider { userWallet },