From f97a017f3fa6874dcd7cdedbe86d35bea3427d5f Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 25 Apr 2025 13:54:11 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/common/redux/AppReducer.kt | 2 - .../com/tangem/tap/common/redux/AppState.kt | 4 - .../saveWallet/redux/SaveWalletAction.kt | 31 --- .../saveWallet/redux/SaveWalletMiddleware.kt | 188 ----------------- .../saveWallet/redux/SaveWalletReducer.kt | 53 ----- .../saveWallet/redux/SaveWalletState.kt | 18 -- .../ui/SaveWalletBottomSheetFragment.kt | 81 -------- .../saveWallet/ui/SaveWalletScreenState.kt | 12 -- .../saveWallet/ui/SaveWalletViewModel.kt | 92 --------- .../EnrollBiometricsDialogConent.kt | 52 ----- .../ui/components/SaveWalletScreenContent.kt | 193 ------------------ .../ui/models/EnrollBiometricsDialog.kt | 9 - .../tangem/tap/routing/utils/ChildFactory.kt | 10 +- .../com/tangem/common/routing/AppRoute.kt | 4 - .../configs/feature_toggles_config.json | 4 - .../biometry/BiometryFeatureToggles.kt | 5 - .../impl/DefaultBiometryFeatureToggles.kt | 12 -- .../biometry/impl/di/FeatureModule.kt | 5 - .../entry/impl/model/OnboardingEntryModel.kt | 84 +++----- .../wallet/child/wallet/model/WalletModel.kt | 12 +- .../router/DefaultWalletRouter.kt | 8 - .../presentation/router/InnerWalletRouter.kt | 3 - 22 files changed, 28 insertions(+), 854 deletions(-) delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletAction.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletReducer.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletState.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletBottomSheetFragment.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletScreenState.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletViewModel.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/EnrollBiometricsDialogConent.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/SaveWalletScreenContent.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/saveWallet/ui/models/EnrollBiometricsDialog.kt delete mode 100644 features/biometry/api/src/main/kotlin/com/tangem/features/biometry/BiometryFeatureToggles.kt delete mode 100644 features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/DefaultBiometryFeatureToggles.kt diff --git a/app/src/main/java/com/tangem/tap/common/redux/AppReducer.kt b/app/src/main/java/com/tangem/tap/common/redux/AppReducer.kt index 7aa2d7a120..111bad630c 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/AppReducer.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/AppReducer.kt @@ -4,7 +4,6 @@ import com.tangem.tap.common.redux.global.globalReducer import com.tangem.tap.features.details.redux.DetailsReducer import com.tangem.tap.features.details.redux.walletconnect.WalletConnectReducer import com.tangem.tap.features.home.redux.HomeReducer -import com.tangem.tap.features.saveWallet.redux.SaveWalletReducer import com.tangem.tap.features.welcome.redux.WelcomeReducer import com.tangem.tap.proxy.redux.DaggerGraphReducer import org.rekotlin.Action @@ -19,7 +18,6 @@ fun appReducer(action: Action, state: AppState?): AppState { detailsState = DetailsReducer.reduce(action, state), walletConnectState = WalletConnectReducer.reduce(action, state.walletConnectState), welcomeState = WelcomeReducer.reduce(action, state), - saveWalletState = SaveWalletReducer.reduce(action, state), daggerGraphState = DaggerGraphReducer.reduce(action, state), ) } diff --git a/app/src/main/java/com/tangem/tap/common/redux/AppState.kt b/app/src/main/java/com/tangem/tap/common/redux/AppState.kt index 99946cc324..e1814f72c0 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/AppState.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/AppState.kt @@ -10,8 +10,6 @@ import com.tangem.tap.features.details.redux.walletconnect.WalletConnectState import com.tangem.tap.features.home.redux.HomeMiddleware import com.tangem.tap.features.home.redux.HomeState import com.tangem.tap.features.onboarding.products.wallet.redux.BackupMiddleware -import com.tangem.tap.features.saveWallet.redux.SaveWalletMiddleware -import com.tangem.tap.features.saveWallet.redux.SaveWalletState import com.tangem.tap.features.wallet.redux.middlewares.TradeCryptoMiddleware import com.tangem.tap.features.welcome.redux.WelcomeMiddleware import com.tangem.tap.features.welcome.redux.WelcomeState @@ -26,7 +24,6 @@ data class AppState( val detailsState: DetailsState = DetailsState(), val walletConnectState: WalletConnectState = WalletConnectState(), val welcomeState: WelcomeState = WelcomeState(), - val saveWalletState: SaveWalletState = SaveWalletState(), val daggerGraphState: DaggerGraphState = DaggerGraphState(), ) : StateType { @@ -41,7 +38,6 @@ data class AppState( WalletConnectMiddleware().walletConnectMiddleware, BackupMiddleware().backupMiddleware, WelcomeMiddleware().middleware, - SaveWalletMiddleware().middleware, LockUserWalletsTimerMiddleware().middleware, AccessCodeRequestPolicyMiddleware().middleware, DaggerGraphMiddleware.daggerGraphMiddleware, diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletAction.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletAction.kt deleted file mode 100644 index f4981a8c5c..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletAction.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.tangem.tap.features.saveWallet.redux - -import com.tangem.common.core.TangemError -import com.tangem.domain.models.scan.ScanResponse -import org.rekotlin.Action - -internal sealed interface SaveWalletAction : Action { - data class ProvideBackupInfo( - val scanResponse: ScanResponse, - val accessCode: String?, - val backupCardsIds: Set?, - ) : SaveWalletAction - - data object AllowToUseBiometrics : SaveWalletAction { - data object Success : SaveWalletAction - data class Error(val error: TangemError) : SaveWalletAction - } - - data object Dismiss : SaveWalletAction - - data object CloseError : SaveWalletAction - data object EnrollBiometrics : SaveWalletAction { - data object Enroll : SaveWalletAction - data object Cancel : SaveWalletAction - } - - data class SaveWalletAfterBackup( - val hasBackupError: Boolean, - val shouldNavigateToWallet: Boolean, - ) : SaveWalletAction -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt deleted file mode 100644 index d8f15fd3d7..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt +++ /dev/null @@ -1,188 +0,0 @@ -package com.tangem.tap.features.saveWallet.redux - -import com.tangem.common.* -import com.tangem.common.core.TangemSdkError -import com.tangem.common.extensions.guard -import com.tangem.common.routing.AppRoute -import com.tangem.core.analytics.Analytics -import com.tangem.core.analytics.models.event.MainScreenAnalyticsEvent -import com.tangem.domain.wallets.models.UserWallet -import com.tangem.tap.common.analytics.events.AnalyticsParam -import com.tangem.tap.common.analytics.events.Onboarding -import com.tangem.tap.common.extensions.dispatchNavigationAction -import com.tangem.tap.common.extensions.dispatchWithMain -import com.tangem.tap.common.extensions.inject -import com.tangem.tap.common.extensions.onUserWalletSelected -import com.tangem.tap.common.redux.AppState -import com.tangem.tap.features.onboarding.products.wallet.redux.OnboardingWalletAction -import com.tangem.tap.proxy.redux.DaggerGraphState -import com.tangem.tap.scope -import com.tangem.tap.store -import com.tangem.tap.tangemSdkManager -import com.tangem.utils.coroutines.JobHolder -import com.tangem.utils.coroutines.saveIn -import kotlinx.coroutines.launch -import org.rekotlin.Middleware -import timber.log.Timber - -internal class SaveWalletMiddleware { - - private val saveWalletJobHolder = JobHolder() - - val middleware: Middleware = { _, stateProvider -> - { next -> - { action -> - val state = stateProvider() - if (action is SaveWalletAction && state != null) { - handleAction(action, state.saveWalletState) - } - next(action) - } - } - } - - private fun handleAction(action: SaveWalletAction, state: SaveWalletState) { - when (action) { - is SaveWalletAction.AllowToUseBiometrics -> allowToUseBiometrics(state) - is SaveWalletAction.EnrollBiometrics.Enroll -> enrollBiometrics() - is SaveWalletAction.Dismiss -> dismiss(state) - is SaveWalletAction.SaveWalletAfterBackup -> saveWalletAfterBackup( - state = state, - hasBackupError = action.hasBackupError, - shouldNavigateToWallet = action.shouldNavigateToWallet, - ) - is SaveWalletAction.AllowToUseBiometrics.Success, - is SaveWalletAction.AllowToUseBiometrics.Error, - is SaveWalletAction.ProvideBackupInfo, - is SaveWalletAction.CloseError, - is SaveWalletAction.EnrollBiometrics, - is SaveWalletAction.EnrollBiometrics.Cancel, - -> Unit - } - } - - private fun saveWalletAfterBackup( - state: SaveWalletState, - hasBackupError: Boolean, - shouldNavigateToWallet: Boolean, - ) { - scope.launch { - val backupInfo = state.backupInfo ?: error("Backup info is null") - - val userWalletBuilder = store.inject(DaggerGraphState::userWalletBuilderFactory) - .create(scanResponse = backupInfo.scanResponse) - - val userWallet = userWalletBuilder - .backupCardsIds(state.backupInfo.backupCardsIds) - .hasBackupError(hasBackupError) - .build() - .guard { - Timber.e("User wallet not created") - return@launch - } - - val userWalletsListManager = store.inject(DaggerGraphState::generalUserWalletsListManager) - userWalletsListManager.save(userWallet, canOverride = true) - .flatMap { - saveAccessCodeIfNeeded(accessCode = backupInfo.accessCode, cardsInWallet = userWallet.cardsInWallet) - } - .doOnFailure { error -> - Timber.e(error, "Unable to save user wallet") - } - .doOnSuccess { - store.onUserWalletSelected(userWallet) - if (!shouldNavigateToWallet) { - store.dispatchWithMain(OnboardingWalletAction.WalletSaved(userWallet.walletId)) - } - } - .doOnResult { if (shouldNavigateToWallet) navigateToWallet() } - } - } - - private fun enrollBiometrics() { - store.inject(DaggerGraphState::settingsManager).openBiometricSettings() - } - - private fun allowToUseBiometrics(state: SaveWalletState) = scope.launch { - if (tangemSdkManager.checkNeedEnrollBiometrics()) { - store.dispatchWithMain(SaveWalletAction.EnrollBiometrics) - return@launch - } - - if (state.backupInfo != null) { - // TODO: Remove after onboarding refactoring - Analytics.send(Onboarding.EnableBiometrics(AnalyticsParam.OnOffState.On)) - } else { - Analytics.send( - MainScreenAnalyticsEvent.EnableBiometrics( - state = com.tangem.core.analytics.models.AnalyticsParam.OnOffState.On, - ), - ) - } - - /* - - * because it will be automatically saved on UserWalletsListManager switch - */ - val userWalletsListManager = store.inject(DaggerGraphState::generalUserWalletsListManager) - val selectedUserWallet = userWalletsListManager.selectedUserWalletSync.guard { - val error = IllegalStateException("No selected user wallet") - Timber.e(error, "Unable to save user wallet") - store.dispatchWithMain( - SaveWalletAction.AllowToUseBiometrics.Error(TangemSdkError.ExceptionError(error)), - ) - return@launch - } - - handleSuccessAllowing(selectedUserWallet) - }.saveIn(saveWalletJobHolder) - - private suspend fun handleSuccessAllowing(userWallet: UserWallet) { - store.inject(DaggerGraphState::walletsRepository).saveShouldSaveUserWallets(item = true) - - store.inject(DaggerGraphState::settingsRepository).setShouldSaveAccessCodes(value = true) - - store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( - isBiometricsRequestPolicy = userWallet.hasAccessCode, - ) - - store.dispatchWithMain(SaveWalletAction.AllowToUseBiometrics.Success) - store.dispatchNavigationAction { replaceAll(AppRoute.Wallet) } - } - - private fun dismiss(state: SaveWalletState) { - if (state.backupInfo != null) { - // TODO: Remove after onboarding refactoring - Analytics.send(Onboarding.EnableBiometrics(AnalyticsParam.OnOffState.Off)) - } else { - Analytics.send( - MainScreenAnalyticsEvent.EnableBiometrics( - com.tangem.core.analytics.models.AnalyticsParam.OnOffState.Off, - ), - ) - } - } - - private suspend fun saveAccessCodeIfNeeded( - accessCode: String?, - cardsInWallet: Set, - ): CompletionResult { - return when { - accessCode.isNullOrBlank() -> { - CompletionResult.Success(Unit) - } - else -> { - tangemSdkManager.saveAccessCode( - accessCode = accessCode, - cardsIds = cardsInWallet, - ) - } - } - } - - private fun navigateToWallet() { - store.dispatchNavigationAction { - replaceAll(AppRoute.Wallet) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletReducer.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletReducer.kt deleted file mode 100644 index 370f7cd935..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletReducer.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.tangem.tap.features.saveWallet.redux - -import com.tangem.tap.common.redux.AppState -import org.rekotlin.Action - -internal object SaveWalletReducer { - fun reduce(action: Action, state: AppState): SaveWalletState { - return if (action is SaveWalletAction) { - internalReduce(action, state.saveWalletState) - } else { - state.saveWalletState - } - } - - private fun internalReduce(action: SaveWalletAction, state: SaveWalletState): SaveWalletState { - return when (action) { - is SaveWalletAction.ProvideBackupInfo -> state.copy( - backupInfo = SaveWalletState.WalletBackupInfo( - scanResponse = action.scanResponse, - accessCode = action.accessCode, - backupCardsIds = action.backupCardsIds, - ), - ) - is SaveWalletAction.AllowToUseBiometrics, - -> state.copy(isSaveInProgress = true) - is SaveWalletAction.AllowToUseBiometrics.Error -> state.copy( - error = action.error, - isSaveInProgress = false, - ) - is SaveWalletAction.AllowToUseBiometrics.Success -> state.copy( - backupInfo = null, - isSaveInProgress = false, - ) - is SaveWalletAction.Dismiss -> state.copy( - backupInfo = null, - ) - is SaveWalletAction.CloseError -> state.copy( - error = null, - ) - is SaveWalletAction.EnrollBiometrics -> state.copy( - needEnrollBiometrics = true, - ) - is SaveWalletAction.EnrollBiometrics.Enroll, - is SaveWalletAction.EnrollBiometrics.Cancel, - -> state.copy( - needEnrollBiometrics = false, - isSaveInProgress = false, - ) - is SaveWalletAction.SaveWalletAfterBackup, - -> state - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletState.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletState.kt deleted file mode 100644 index b57528ceaa..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletState.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.tangem.tap.features.saveWallet.redux - -import com.tangem.common.core.TangemError -import com.tangem.domain.models.scan.ScanResponse -import org.rekotlin.StateType - -data class SaveWalletState( - val backupInfo: WalletBackupInfo? = null, - val isSaveInProgress: Boolean = false, - val needEnrollBiometrics: Boolean = false, - val error: TangemError? = null, -) : StateType { - data class WalletBackupInfo( - val scanResponse: ScanResponse, - val accessCode: String?, - val backupCardsIds: Set?, - ) -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletBottomSheetFragment.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletBottomSheetFragment.kt deleted file mode 100644 index 7062719124..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletBottomSheetFragment.kt +++ /dev/null @@ -1,81 +0,0 @@ -package com.tangem.tap.features.saveWallet.ui - -import android.content.DialogInterface -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.fragment.app.viewModels -import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.tangem.core.ui.UiDependencies -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.screen.ComposeBottomSheetFragment -import com.tangem.tap.features.details.ui.cardsettings.resolveReference -import com.tangem.tap.features.saveWallet.ui.components.EnrollBiometricsDialogContent -import com.tangem.tap.features.saveWallet.ui.components.SaveWalletScreenContent -import com.tangem.tap.features.saveWallet.ui.models.EnrollBiometricsDialog -import dagger.hilt.android.AndroidEntryPoint -import javax.inject.Inject - -@AndroidEntryPoint -internal class SaveWalletBottomSheetFragment : ComposeBottomSheetFragment() { - - @Inject - override lateinit var uiDependencies: UiDependencies - - override val expandedHeightFraction: Float = .98f - - private val viewModel by viewModels() - - override fun onCancel(dialog: DialogInterface) { - viewModel.cancelOrClose() - super.onCancel(dialog) - } - - @Composable - override fun ScreenContent(modifier: Modifier) { - val state by viewModel.state.collectAsStateWithLifecycle() - val snackbarHostState = remember { SnackbarHostState() } - val errorMessage by rememberUpdatedState(newValue = state.error?.resolveReference()) - val enrollBiometricsDialog by rememberUpdatedState(newValue = state.enrollBiometricsDialog) - - Box(modifier = modifier) { - SaveWalletScreenContent( - showProgress = state.showProgress, - onSaveWalletClick = viewModel::saveWallet, - onCloseClick = { - viewModel.cancelOrClose() - dismissAllowingStateLoss() - }, - ) - - SnackbarHost( - modifier = Modifier - .align(Alignment.BottomCenter) - .padding(vertical = TangemTheme.dimens.spacing16) - .fillMaxWidth(), - hostState = snackbarHostState, - ) - } - - EnrollBiometricsDialog(dialog = enrollBiometricsDialog) - - LaunchedEffect(key1 = errorMessage) { - errorMessage?.let { - snackbarHostState.showSnackbar(it) - viewModel.closeError() - } - } - } - - @Suppress("TopLevelComposableFunctions") - @Composable - private fun EnrollBiometricsDialog(dialog: EnrollBiometricsDialog?) { - if (dialog == null) return - EnrollBiometricsDialogContent(dialog) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletScreenState.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletScreenState.kt deleted file mode 100644 index 51dbdcadc0..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletScreenState.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.tap.features.saveWallet.ui - -import androidx.compose.runtime.Immutable -import com.tangem.tap.features.details.ui.cardsettings.TextReference -import com.tangem.tap.features.saveWallet.ui.models.EnrollBiometricsDialog - -@Immutable -internal data class SaveWalletScreenState( - val showProgress: Boolean = false, - val enrollBiometricsDialog: EnrollBiometricsDialog? = null, - val error: TextReference? = null, -) \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletViewModel.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletViewModel.kt deleted file mode 100644 index 40164976d3..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/SaveWalletViewModel.kt +++ /dev/null @@ -1,92 +0,0 @@ -package com.tangem.tap.features.saveWallet.ui - -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import com.tangem.core.analytics.api.AnalyticsEventHandler -import com.tangem.core.analytics.models.AnalyticsParam -import com.tangem.domain.settings.SetSaveWalletScreenShownUseCase -import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent -import com.tangem.tap.common.extensions.dispatchOnMain -import com.tangem.tap.features.details.ui.cardsettings.TextReference -import com.tangem.tap.features.saveWallet.redux.SaveWalletAction -import com.tangem.tap.features.saveWallet.redux.SaveWalletState -import com.tangem.tap.features.saveWallet.ui.models.EnrollBiometricsDialog -import com.tangem.tap.store -import com.tangem.utils.coroutines.AppCoroutineDispatcherProvider -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.update -import kotlinx.coroutines.launch -import org.rekotlin.StoreSubscriber -import javax.inject.Inject - -@HiltViewModel -internal class SaveWalletViewModel @Inject constructor( - private val analyticsEventHandler: AnalyticsEventHandler, - private val setSaveWalletScreenShownUseCase: SetSaveWalletScreenShownUseCase, - dispatchers: AppCoroutineDispatcherProvider, -) : ViewModel(), StoreSubscriber { - - private val stateInternal = MutableStateFlow(SaveWalletScreenState()) - val state: StateFlow = stateInternal - - init { - subscribeToStoreChanges() - - viewModelScope.launch(dispatchers.main) { - setSaveWalletScreenShownUseCase() - } - } - - fun saveWallet() { - analyticsEventHandler.send(WalletScreenAnalyticsEvent.MainScreen.EnableBiometrics(AnalyticsParam.OnOffState.On)) - store.dispatch(SaveWalletAction.AllowToUseBiometrics) - } - - fun cancelOrClose() { - analyticsEventHandler.send( - WalletScreenAnalyticsEvent.MainScreen.EnableBiometrics(AnalyticsParam.OnOffState.Off), - ) - store.dispatch(SaveWalletAction.Dismiss) - } - - fun closeError() { - store.dispatch(SaveWalletAction.CloseError) - } - - override fun newState(state: SaveWalletState) { - stateInternal.update { prevState -> - prevState.copy( - showProgress = state.isSaveInProgress, - enrollBiometricsDialog = if (state.needEnrollBiometrics) createEnrollBiometricsDialog() else null, - error = state.error - ?.takeUnless { it.silent } - ?.let { error -> - error.messageResId?.let { TextReference.Res(it) } - ?: TextReference.Str(error.customMessage) - }, - ) - } - } - - override fun onCleared() { - store.unsubscribe(this) - } - - private fun subscribeToStoreChanges() { - store.subscribe(this) { appState -> - appState.skip { old, new -> old.saveWalletState == new.saveWalletState } - .select { it.saveWalletState } - } - } - - private fun createEnrollBiometricsDialog() = EnrollBiometricsDialog( - onEnroll = { - store.dispatchOnMain(SaveWalletAction.EnrollBiometrics.Enroll) - }, - onCancel = { - store.dispatchOnMain(SaveWalletAction.EnrollBiometrics.Cancel) - }, - ) -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/EnrollBiometricsDialogConent.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/EnrollBiometricsDialogConent.kt deleted file mode 100644 index 54da091df6..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/EnrollBiometricsDialogConent.kt +++ /dev/null @@ -1,52 +0,0 @@ -package com.tangem.tap.features.saveWallet.ui.components - -import android.content.res.Configuration -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Column -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview -import com.tangem.core.ui.R -import com.tangem.core.ui.components.BasicDialog -import com.tangem.core.ui.components.DialogButtonUM -import com.tangem.core.ui.extensions.stringResourceSafe -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.res.TangemThemePreview -import com.tangem.tap.features.saveWallet.ui.models.EnrollBiometricsDialog - -@Composable -fun EnrollBiometricsDialogContent(dialog: EnrollBiometricsDialog) { - BasicDialog( - title = stringResourceSafe(R.string.save_user_wallet_agreement_enroll_biometrics_title), - message = stringResourceSafe(R.string.save_user_wallet_agreement_enroll_biometrics_description), - confirmButton = DialogButtonUM( - title = stringResourceSafe(R.string.common_enable), - onClick = dialog.onEnroll, - ), - dismissButton = DialogButtonUM( - onClick = dialog.onCancel, - ), - onDismissDialog = dialog.onCancel, - ) -} - -// region Preview -@Composable -private fun EnrollBiometricDialogContentSample(modifier: Modifier = Modifier) { - Column( - modifier = modifier - .background(TangemTheme.colors.background.primary), - ) { - EnrollBiometricsDialogContent(dialog = EnrollBiometricsDialog({}, {})) - } -} - -@Preview(showBackground = true, widthDp = 360) -@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -private fun EnrollBiometricDialogContentPreview() { - TangemThemePreview { - EnrollBiometricDialogContentSample() - } -} -// endregion Preview \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/SaveWalletScreenContent.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/SaveWalletScreenContent.kt deleted file mode 100644 index 403c914016..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/components/SaveWalletScreenContent.kt +++ /dev/null @@ -1,193 +0,0 @@ -package com.tangem.tap.features.saveWallet.ui.components - -import android.content.res.Configuration -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview -import com.tangem.core.ui.components.* -import com.tangem.core.ui.components.atoms.Hand -import com.tangem.core.ui.extensions.stringResourceSafe -import com.tangem.core.ui.res.TangemTheme -import com.tangem.core.ui.res.TangemThemePreview -import com.tangem.wallet.R - -@Composable -internal fun SaveWalletScreenContent(showProgress: Boolean, onSaveWalletClick: () -> Unit, onCloseClick: () -> Unit) { - Column(horizontalAlignment = Alignment.CenterHorizontally) { - Header(onCloseClick = onCloseClick) - SpacerHHalf() - Title(modifier = Modifier.padding(horizontal = TangemTheme.dimens.spacing22)) - SpacerH32() - Description( - modifier = Modifier - .padding( - start = TangemTheme.dimens.spacing34, - end = TangemTheme.dimens.spacing56, - ) - .fillMaxWidth(), - ) - SpacerHHalf() - Footer( - showProgress = showProgress, - onSaveWalletClick = onSaveWalletClick, - ) - SpacerH16() - } -} - -@Composable -private fun Header(onCloseClick: () -> Unit) { - Column( - modifier = Modifier.fillMaxWidth(), - verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing8), - ) { - Hand() - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.End, - ) { - IconButton( - modifier = Modifier.size(TangemTheme.dimens.size32), - onClick = onCloseClick, - ) { - Icon( - modifier = Modifier.size(TangemTheme.dimens.size24), - painter = painterResource(id = R.drawable.ic_close_24), - tint = TangemTheme.colors.icon.secondary, - contentDescription = stringResourceSafe(id = R.string.common_cancel), - ) - } - SpacerW8() - } - } -} - -@Composable -private fun Title(modifier: Modifier = Modifier) { - Column( - modifier = modifier, - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing32), - ) { - Icon( - modifier = Modifier.size(TangemTheme.dimens.size56), - painter = painterResource(id = R.drawable.ic_fingerprint_24), - tint = TangemTheme.colors.icon.primary1, - contentDescription = null, - ) - Text( - text = stringResourceSafe(id = R.string.save_user_wallet_agreement_header_biometrics), - style = TangemTheme.typography.h2, - color = TangemTheme.colors.text.primary1, - textAlign = TextAlign.Center, - ) - } -} - -@Composable -private fun Description(modifier: Modifier = Modifier) { - Column( - modifier = modifier, - verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing24), - horizontalAlignment = Alignment.Start, - ) { - DescriptionItem( - iconPainter = painterResource(id = R.drawable.ic_face_recognition_24), - title = stringResourceSafe(id = R.string.save_user_wallet_agreement_access_title), - description = stringResourceSafe(id = R.string.save_user_wallet_agreement_access_description), - ) - DescriptionItem( - iconPainter = painterResource(id = R.drawable.ic_lock_24), - title = stringResourceSafe(id = R.string.save_user_wallet_agreement_code_title), - description = stringResourceSafe(id = R.string.save_user_wallet_agreement_code_description_biometrics), - ) - } -} - -@Composable -private fun Footer(showProgress: Boolean, onSaveWalletClick: () -> Unit) { - Column( - modifier = Modifier - .padding(horizontal = TangemTheme.dimens.spacing16) - .fillMaxWidth(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing16), - ) { - PrimaryButton( - modifier = Modifier.fillMaxWidth(), - showProgress = showProgress, - text = stringResourceSafe(id = R.string.save_user_wallet_agreement_allow_biometrics), - onClick = onSaveWalletClick, - ) - Text( - modifier = Modifier.fillMaxWidth(fraction = .7f), - text = stringResourceSafe(R.string.save_user_wallet_agreement_notice), - style = TangemTheme.typography.caption2, - color = TangemTheme.colors.text.tertiary, - textAlign = TextAlign.Center, - ) - } -} - -@Composable -private fun DescriptionItem(iconPainter: Painter, title: String, description: String) { - Row( - verticalAlignment = Alignment.Top, - horizontalArrangement = Arrangement.SpaceEvenly, - ) { - Icon( - modifier = Modifier.size(TangemTheme.dimens.size24), - painter = iconPainter, - tint = TangemTheme.colors.icon.primary1, - contentDescription = null, - ) - SpacerW24() - Column { - Text( - text = title, - style = TangemTheme.typography.subtitle1, - color = TangemTheme.colors.text.primary1, - ) - SpacerH4() - Text( - text = description, - style = TangemTheme.typography.body2, - color = TangemTheme.colors.text.secondary, - ) - } - } -} - -// region Preview -@Composable -private fun SaveWalletScreenContentSample(modifier: Modifier = Modifier) { - Column( - modifier = modifier - .background(TangemTheme.colors.background.primary), - ) { - SaveWalletScreenContent( - showProgress = false, - onSaveWalletClick = { /* no-op */ }, - onCloseClick = { /* no-op */ }, - ) - } -} - -@Preview(showBackground = true, widthDp = 360) -@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -private fun SaveWalletScreenContentPreview() { - TangemThemePreview { - SaveWalletScreenContentSample() - } -} -// endregion Preview \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/models/EnrollBiometricsDialog.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/ui/models/EnrollBiometricsDialog.kt deleted file mode 100644 index 7f785a95cf..0000000000 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/ui/models/EnrollBiometricsDialog.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.tangem.tap.features.saveWallet.ui.models - -import androidx.compose.runtime.Immutable - -@Immutable -data class EnrollBiometricsDialog( - val onEnroll: () -> Unit, - val onCancel: () -> Unit, -) \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt index d7a44e57fd..f5feb80a77 100644 --- a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt +++ b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt @@ -33,7 +33,6 @@ import com.tangem.tap.features.details.ui.resetcard.api.ResetCardComponent import com.tangem.tap.features.details.ui.securitymode.api.SecurityModeComponent import com.tangem.tap.features.details.ui.walletconnect.api.WalletConnectComponent import com.tangem.tap.features.home.api.HomeComponent -import com.tangem.tap.features.saveWallet.ui.SaveWalletBottomSheetFragment import com.tangem.tap.features.welcome.component.WelcomeComponent import com.tangem.tap.routing.component.RoutingComponent.Child import com.tangem.tap.routing.toggle.RoutingFeatureToggles @@ -41,7 +40,7 @@ import com.tangem.utils.Provider import dagger.hilt.android.scopes.ActivityScoped import java.util.WeakHashMap import javax.inject.Inject -import com.tangem.features.walletconnect.components.WalletConnectEntryComponent as RedisegnedWalletConnectComponent +import com.tangem.features.walletconnect.components.WalletConnectEntryComponent as RedesignedWalletConnectComponent @ActivityScoped @Suppress("LongParameterList", "LargeClass") @@ -77,7 +76,7 @@ internal class ChildFactory @Inject constructor( private val walletComponentFactory: WalletEntryComponent.Factory, private val sendComponentFactoryV2: com.tangem.features.send.v2.api.SendComponent.Factory, private val sendFeatureToggles: SendFeatureToggles, - private val redesignedWalletConnectComponentFactory: RedisegnedWalletConnectComponent.Factory, + private val redesignedWalletConnectComponentFactory: RedesignedWalletConnectComponent.Factory, private val nftComponentFactory: NFTComponent.Factory, private val nftSendComponentFactory: NFTSendComponent.Factory, private val testerRouter: TesterRouter, @@ -419,8 +418,6 @@ internal class ChildFactory @Inject constructor( componentFactory = nftSendComponentFactory, ) } - is AppRoute.SaveWallet, - -> error("Unsupported route: $route") } // endregion } @@ -448,9 +445,6 @@ internal class ChildFactory @Inject constructor( componentFactory = appCurrencySelectorComponentFactory, ) } - is AppRoute.SaveWallet -> { - route.asFragmentChild(Provider { SaveWalletBottomSheetFragment() }) - } is AppRoute.Send -> { if (sendFeatureToggles.isSendV2Enabled) { route.asComponentChild( diff --git a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt index 24ed3c80f7..0a280474be 100644 --- a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt +++ b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt @@ -164,10 +164,6 @@ sealed class AppRoute(val path: String) : Route { @Serializable data object TesterMenu : AppRoute(path = "/tester_menu") - @Deprecated("Do not use! Should be replaced by an implementation in wallet route component") - @Serializable - data object SaveWallet : AppRoute(path = "/save_wallet") - @Serializable data object AppCurrencySelector : AppRoute(path = "/app_currency_selector") diff --git a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json index 57f18c60fc..5077c92b05 100644 --- a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json @@ -39,10 +39,6 @@ "name": "TX_HISTORY_REFACTORING_ENABLED", "version": "5.22.0" }, - { - "name": "ASK_BIOMETRY_REFACTORING_ENABLED", - "version": "5.22.0" - }, { "name": "NEW_ARTWORK_LOADING", "version": "5.24.0" diff --git a/features/biometry/api/src/main/kotlin/com/tangem/features/biometry/BiometryFeatureToggles.kt b/features/biometry/api/src/main/kotlin/com/tangem/features/biometry/BiometryFeatureToggles.kt deleted file mode 100644 index 8d9da24f06..0000000000 --- a/features/biometry/api/src/main/kotlin/com/tangem/features/biometry/BiometryFeatureToggles.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.tangem.features.biometry - -interface BiometryFeatureToggles { - val isAskForBiometryEnabled: Boolean -} \ No newline at end of file diff --git a/features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/DefaultBiometryFeatureToggles.kt b/features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/DefaultBiometryFeatureToggles.kt deleted file mode 100644 index 4cbc7b25ac..0000000000 --- a/features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/DefaultBiometryFeatureToggles.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.features.biometry.impl - -import com.tangem.core.configtoggle.feature.FeatureTogglesManager -import com.tangem.features.biometry.BiometryFeatureToggles -import javax.inject.Inject - -internal class DefaultBiometryFeatureToggles @Inject constructor( - private val featureTogglesManager: FeatureTogglesManager, -) : BiometryFeatureToggles { - override val isAskForBiometryEnabled: Boolean - get() = featureTogglesManager.isFeatureEnabled("ASK_BIOMETRY_REFACTORING_ENABLED") -} \ No newline at end of file diff --git a/features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/di/FeatureModule.kt b/features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/di/FeatureModule.kt index 3e33b8ce67..01f1c819ce 100644 --- a/features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/di/FeatureModule.kt +++ b/features/biometry/impl/src/main/kotlin/com/tangem/features/biometry/impl/di/FeatureModule.kt @@ -3,9 +3,7 @@ package com.tangem.features.biometry.impl.di import com.tangem.core.decompose.di.ModelComponent import com.tangem.core.decompose.model.Model import com.tangem.features.biometry.AskBiometryComponent -import com.tangem.features.biometry.BiometryFeatureToggles import com.tangem.features.biometry.impl.DefaultAskBiometryComponent -import com.tangem.features.biometry.impl.DefaultBiometryFeatureToggles import com.tangem.features.biometry.impl.model.AskBiometryModel import dagger.Binds import dagger.Module @@ -18,9 +16,6 @@ import dagger.multibindings.IntoMap @InstallIn(SingletonComponent::class) internal interface FeatureModule { - @Binds - fun bindFeatureToggles(impl: DefaultBiometryFeatureToggles): BiometryFeatureToggles - @Binds fun bindComponentFactory(impl: DefaultAskBiometryComponent.Factory): AskBiometryComponent.Factory } diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt index b6a675a820..2b9e393147 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt @@ -19,7 +19,6 @@ import com.tangem.domain.wallets.legacy.UserWalletsListManager import com.tangem.domain.wallets.legacy.asLockable import com.tangem.domain.wallets.models.UserWallet import com.tangem.features.biometry.AskBiometryComponent -import com.tangem.features.biometry.BiometryFeatureToggles import com.tangem.features.onboarding.v2.TitleProvider import com.tangem.features.onboarding.v2.common.ui.CantLeaveBackupDialog import com.tangem.features.onboarding.v2.done.api.OnboardingDoneComponent @@ -32,8 +31,6 @@ import com.tangem.features.onboarding.v2.twin.api.OnboardingTwinComponent import com.tangem.features.onboarding.v2.visa.impl.child.welcome.model.analytics.OnboardingVisaAnalyticsEvent import com.tangem.sdk.api.TangemSdkManager import com.tangem.utils.coroutines.CoroutineDispatcherProvider -import kotlinx.coroutines.NonCancellable -import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import javax.inject.Inject @@ -46,7 +43,6 @@ internal class OnboardingEntryModel @Inject constructor( private val router: Router, private val tangemSdkManager: TangemSdkManager, private val settingsRepository: SettingsRepository, - private val askBiometryFeatureToggles: BiometryFeatureToggles, private val analyticsEventHandler: AnalyticsEventHandler, private val uiMessageSender: UiMessageSender, private val userWalletsListManager: UserWalletsListManager, @@ -148,37 +144,25 @@ internal class OnboardingEntryModel @Inject constructor( private fun navigateToFinalScreenFlow( doneMode: OnboardingDoneComponent.Mode = OnboardingDoneComponent.Mode.WalletCreated, ) { - if (askBiometryFeatureToggles.isAskForBiometryEnabled) { - modelScope.launch { - if (tangemSdkManager.checkCanUseBiometry() && settingsRepository.shouldShowSaveUserWalletScreen()) { - doIfVisa { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.BiometricScreenOpened) - } - stackNavigation.replaceAll( - OnboardingRoute.AskBiometry(modelCallbacks = AskBiometryModelCallbacks(doneMode)), - ) - } else { - doIfVisa { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened) - } - stackNavigation.replaceAll( - OnboardingRoute.Done( - mode = doneMode, - onDone = ::exitComponentScreen, - ), - ) + modelScope.launch { + if (tangemSdkManager.checkCanUseBiometry() && settingsRepository.shouldShowSaveUserWalletScreen()) { + doIfVisa { + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.BiometricScreenOpened) } + stackNavigation.replaceAll( + OnboardingRoute.AskBiometry(modelCallbacks = AskBiometryModelCallbacks(doneMode)), + ) + } else { + doIfVisa { + analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened) + } + stackNavigation.replaceAll( + OnboardingRoute.Done( + mode = doneMode, + onDone = ::exitComponentScreen, + ), + ) } - } else { - doIfVisa { - analyticsEventHandler.send(OnboardingVisaAnalyticsEvent.SuccessScreenOpened) - } - stackNavigation.replaceAll( - OnboardingRoute.Done( - mode = doneMode, - onDone = ::exitComponentScreen, - ), - ) } } @@ -213,38 +197,16 @@ internal class OnboardingEntryModel @Inject constructor( } private fun exitComponentScreen() { - if (askBiometryFeatureToggles.isAskForBiometryEnabled) { - if (userWalletsListManager.hasUserWallets) { - val isLocked = runCatching { userWalletsListManager.asLockable()?.isLockedSync!! }.getOrElse { false } + if (userWalletsListManager.hasUserWallets) { + val isLocked = runCatching { userWalletsListManager.asLockable()?.isLockedSync!! }.getOrElse { false } - if (isLocked) { - router.replaceAll(AppRoute.Welcome()) - } else { - router.replaceAll(AppRoute.Wallet) - } + if (isLocked) { + router.replaceAll(AppRoute.Welcome()) } else { - router.replaceAll(AppRoute.Home) + router.replaceAll(AppRoute.Wallet) } } else { - if (userWalletsListManager.hasUserWallets) { - val isLocked = runCatching { userWalletsListManager.asLockable()?.isLockedSync!! }.getOrElse { false } - - if (isLocked) { - router.replaceAll(AppRoute.Welcome()) - } else { - modelScope.launch(NonCancellable) { - router.replaceAll(AppRoute.Wallet) - if (tangemSdkManager.checkCanUseBiometry() && - settingsRepository.shouldShowSaveUserWalletScreen() - ) { - delay(timeMillis = 1_800) - router.push(AppRoute.SaveWallet) - } - } - } - } else { - router.replaceAll(AppRoute.Home) - } + router.replaceAll(AppRoute.Home) } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt index 2ae1a8de10..808dd9238b 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/WalletModel.kt @@ -38,7 +38,6 @@ import com.tangem.feature.wallet.presentation.wallet.state.transformers.* import com.tangem.feature.wallet.presentation.wallet.state.utils.WalletEventSender import com.tangem.feature.wallet.presentation.wallet.utils.ScreenLifecycleProvider import com.tangem.features.biometry.AskBiometryComponent -import com.tangem.features.biometry.BiometryFeatureToggles import com.tangem.features.pushnotifications.api.utils.PUSH_PERMISSION import com.tangem.features.pushnotifications.api.utils.getPushPermissionOrNull import com.tangem.utils.Provider @@ -75,7 +74,6 @@ internal class WalletModel @Inject constructor( private val walletImageResolver: WalletImageResolver, private val tokenListStore: MultiWalletTokenListStore, private val onrampStatusFactory: OnrampStatusFactory, - private val biometryFeatureToggles: BiometryFeatureToggles, private val analyticsEventsHandler: AnalyticsEventHandler, private val fetchCurrencyStatusUseCase: FetchCurrencyStatusUseCase, val screenLifecycleProvider: ScreenLifecycleProvider, @@ -126,13 +124,9 @@ internal class WalletModel @Inject constructor( withContext(dispatchers.io) { delay(timeMillis = 1_800) } if (isShowSaveWalletScreenEnabled()) { - if (biometryFeatureToggles.isAskForBiometryEnabled) { - innerWalletRouter.dialogNavigation.activate( - configuration = WalletDialogConfig.AskForBiometry, - ) - } else { - innerWalletRouter.openSaveUserWalletScreen() - } + innerWalletRouter.dialogNavigation.activate( + configuration = WalletDialogConfig.AskForBiometry, + ) } } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt index 048f9af182..c188ec0104 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt @@ -14,7 +14,6 @@ import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.wallet.navigation.WalletRoute import com.tangem.feature.wallet.presentation.wallet.state.model.WalletDialogConfig -import com.tangem.features.biometry.BiometryFeatureToggles import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.MutableSharedFlow import javax.inject.Inject @@ -25,7 +24,6 @@ internal class DefaultWalletRouter @Inject constructor( private val router: AppRouter, private val urlOpener: UrlOpener, private val reduxStateHolder: ReduxStateHolder, - private val biometryFeatureToggles: BiometryFeatureToggles, ) : InnerWalletRouter { override val dialogNavigation: SlotNavigation = SlotNavigation() @@ -91,12 +89,6 @@ internal class DefaultWalletRouter @Inject constructor( router.push(AppRoute.Home) } - override fun openSaveUserWalletScreen() { - if (biometryFeatureToggles.isAskForBiometryEnabled.not()) { - router.push(AppRoute.SaveWallet) - } - } - override fun isWalletLastScreen(): Boolean { return router.stack.lastOrNull() is AppRoute.Wallet } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt index 393c930e9c..d839063142 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt @@ -46,9 +46,6 @@ internal interface InnerWalletRouter { /** Open stories screen */ fun openStoriesScreen() - /** Open save user wallet screen */ - fun openSaveUserWalletScreen() - /** Is wallet last screen */ fun isWalletLastScreen(): Boolean