Updated on 2026-08-14
This commit is contained in:
parent
10ba20b045
commit
c849c203b1
6 changed files with 134 additions and 5 deletions
|
|
@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.runtime.MutableState
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.tangem.core.navigation.NavigationAction
|
||||
import com.tangem.core.ui.UiDependencies
|
||||
import com.tangem.core.ui.screen.ComposeFragment
|
||||
|
|
@ -19,7 +20,7 @@ internal class ResetCardFragment : ComposeFragment(), StoreSubscriber<DetailsSta
|
|||
@Inject
|
||||
override lateinit var uiDependencies: UiDependencies
|
||||
|
||||
private val viewModel = ResetCardViewModel(store)
|
||||
private val viewModel: ResetCardViewModel by viewModels()
|
||||
|
||||
private var screenState: MutableState<ResetCardScreenState> =
|
||||
mutableStateOf(ResetCardScreenState.InitialState)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,32 @@
|
|||
package com.tangem.tap.features.details.ui.resetcard
|
||||
|
||||
import com.tangem.tap.common.redux.AppState
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import arrow.core.raise.either
|
||||
import com.tangem.domain.card.DeleteSavedAccessCodesUseCase
|
||||
import com.tangem.domain.card.ResetCardUseCase
|
||||
import com.tangem.domain.wallets.models.UserWallet
|
||||
import com.tangem.domain.wallets.usecase.DeleteWalletUseCase
|
||||
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
|
||||
import com.tangem.tap.common.extensions.onUserWalletSelected
|
||||
import com.tangem.tap.features.details.redux.CardSettingsState
|
||||
import com.tangem.tap.features.details.redux.DetailsAction
|
||||
import com.tangem.tap.features.details.ui.cardsettings.TextReference
|
||||
import com.tangem.tap.features.details.ui.resetcard.featuretoggles.ResetCardFeatureToggles
|
||||
import com.tangem.tap.features.details.ui.utils.toResetCardDescriptionText
|
||||
import org.rekotlin.Store
|
||||
import com.tangem.tap.store
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
internal class ResetCardViewModel(private val store: Store<AppState>) {
|
||||
@HiltViewModel
|
||||
internal class ResetCardViewModel @Inject constructor(
|
||||
private val resetCardFeatureToggles: ResetCardFeatureToggles,
|
||||
private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase,
|
||||
private val resetCardUseCase: ResetCardUseCase,
|
||||
private val deleteSavedAccessCodesUseCase: DeleteSavedAccessCodesUseCase,
|
||||
private val deleteWalletUseCase: DeleteWalletUseCase,
|
||||
) : ViewModel() {
|
||||
|
||||
fun updateState(state: CardSettingsState?): ResetCardScreenState.ResetCardScreenContent {
|
||||
val descriptionText = state?.cardInfo
|
||||
|
|
@ -45,7 +64,31 @@ internal class ResetCardViewModel(private val store: Store<AppState>) {
|
|||
|
||||
private fun onLastWarningDialogResetClicked() {
|
||||
store.dispatch(DetailsAction.ResetToFactory.LastWarningDialogVisibility(isShown = false))
|
||||
store.dispatch(DetailsAction.ResetToFactory.Proceed)
|
||||
|
||||
if (resetCardFeatureToggles.isFullResetEnabled) {
|
||||
makeFullReset()
|
||||
} else {
|
||||
store.dispatch(DetailsAction.ResetToFactory.Proceed)
|
||||
}
|
||||
}
|
||||
|
||||
private fun makeFullReset() {
|
||||
val currentUserWallet = getSelectedWalletSyncUseCase().getOrNull() ?: return
|
||||
|
||||
viewModelScope.launch {
|
||||
resetCurrentCard(userWallet = currentUserWallet).onRight {
|
||||
val newSelectedWallet = getSelectedWalletSyncUseCase().getOrNull()
|
||||
if (newSelectedWallet != null) {
|
||||
store.onUserWalletSelected(newSelectedWallet)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun resetCurrentCard(userWallet: UserWallet) = either {
|
||||
resetCardUseCase(userWallet.scanResponse.card).bind()
|
||||
deleteSavedAccessCodesUseCase(userWallet.cardId).bind()
|
||||
deleteWalletUseCase(userWallet.walletId).bind()
|
||||
}
|
||||
|
||||
private fun onLastWarningDialogDismiss() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue