Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-24 22:45:49 +03:00
parent 4d8930951c
commit 0c470faf50
4 changed files with 17 additions and 16 deletions

View file

@ -93,6 +93,8 @@ private fun handlePrepareCardSettingsScreen(
cardTypesResolver: CardTypesResolver,
state: DetailsState,
): DetailsState {
val isTangemWallet = cardTypesResolver.isTangemWallet() || cardTypesResolver.isWallet2()
val isShowPasswordResetRadioButton = isTangemWallet && card.backupStatus is CardDTO.BackupStatus.Active
val cardSettingsState = CardSettingsState(
cardInfo = card.toCardInfo(cardTypesResolver),
manageSecurityState = prepareSecurityOptions(card, cardTypesResolver),
@ -110,6 +112,7 @@ private fun handlePrepareCardSettingsScreen(
} else {
null
},
isShowPasswordResetRadioButton = isShowPasswordResetRadioButton,
)
return state.copy(cardSettingsState = cardSettingsState)
}
@ -152,22 +155,28 @@ private fun isResetToFactoryAllowedByCard(card: CardDTO, cardTypesResolver: Card
}
private fun handleEraseWallet(action: DetailsAction.ResetToFactory, state: DetailsState): DetailsState {
val cardSettingsState = state.cardSettingsState
return when (action) {
is DetailsAction.ResetToFactory.AcceptCondition1 -> {
val warning1Checked = action.accepted
val resetButtonEnabled = if (cardSettingsState?.isShowPasswordResetRadioButton == true) {
warning1Checked && cardSettingsState.condition2Checked
} else {
warning1Checked
}
state.copy(
cardSettingsState = state.cardSettingsState?.copy(
cardSettingsState = cardSettingsState?.copy(
condition1Checked = action.accepted,
resetButtonEnabled = warning1Checked && state.cardSettingsState.condition2Checked,
resetButtonEnabled = resetButtonEnabled,
),
)
}
is DetailsAction.ResetToFactory.AcceptCondition2 -> {
val warning2Checked = action.accepted
state.copy(
cardSettingsState = state.cardSettingsState?.copy(
cardSettingsState = cardSettingsState?.copy(
condition2Checked = action.accepted,
resetButtonEnabled = warning2Checked && state.cardSettingsState.condition1Checked,
resetButtonEnabled = warning2Checked && cardSettingsState.condition1Checked,
),
)
}

View file

@ -45,6 +45,7 @@ data class CardSettingsState(
val condition1Checked: Boolean,
val condition2Checked: Boolean,
val accessCodeRecovery: AccessCodeRecoveryState? = null,
val isShowPasswordResetRadioButton: Boolean,
)
data class ManageSecurityState(

View file

@ -49,7 +49,6 @@ internal class ResetCardFragment : ComposeFragment(), StoreSubscriber<DetailsSta
override fun newState(state: DetailsState) {
if (activity == null || view == null) return
val scanResponse = state.scanResponse ?: return
screenState.value = viewModel.updateState(scanResponse, state.cardSettingsState)
screenState.value = viewModel.updateState(state.cardSettingsState)
}
}

View file

@ -1,8 +1,5 @@
package com.tangem.tap.features.details.ui.resetcard
import com.tangem.domain.common.util.cardTypesResolver
import com.tangem.domain.models.scan.CardDTO
import com.tangem.domain.models.scan.ScanResponse
import com.tangem.tap.common.redux.AppState
import com.tangem.tap.features.details.redux.CardSettingsState
import com.tangem.tap.features.details.redux.DetailsAction
@ -12,10 +9,7 @@ import org.rekotlin.Store
internal class ResetCardViewModel(private val store: Store<AppState>) {
fun updateState(
scanResponse: ScanResponse,
state: CardSettingsState?,
): ResetCardScreenState.ResetCardScreenContent {
fun updateState(state: CardSettingsState?): ResetCardScreenState.ResetCardScreenContent {
val descriptionText = state?.cardInfo
?.toResetCardDescriptionText()
?: TextReference.Str(value = "")
@ -23,9 +17,7 @@ internal class ResetCardViewModel(private val store: Store<AppState>) {
val warningsToShow = buildList {
add(ResetCardScreenState.WarningsToReset.LOST_WALLET_ACCESS)
val cardTypesResolver = scanResponse.cardTypesResolver
val isTangemWallet = cardTypesResolver.isTangemWallet() || cardTypesResolver.isWallet2()
if (isTangemWallet && state?.card?.backupStatus is CardDTO.BackupStatus.Active) {
if (state?.isShowPasswordResetRadioButton == true) {
add(ResetCardScreenState.WarningsToReset.LOST_PASSWORD_RESTORE)
}
}