From 875ccb221928b3a2f29bba4f55825ec16098e371 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 19 May 2023 13:18:51 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../ui/OnboardingSeedPhraseStateHandler.kt | 24 +++++++---- .../onboarding/api/OnboardingSeedPhrase.kt | 41 ++++++++----------- .../onboarding/api/OnboardingSeedPhraseApi.kt | 5 ++- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingSeedPhraseStateHandler.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingSeedPhraseStateHandler.kt index 2b9370bdd1..8a26aa71f0 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingSeedPhraseStateHandler.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingSeedPhraseStateHandler.kt @@ -1,5 +1,6 @@ package com.tangem.tap.features.onboarding.products.wallet.ui +import androidx.compose.runtime.collectAsState import com.tangem.feature.onboarding.api.OnboardingSeedPhrase import com.tangem.feature.onboarding.api.OnboardingSeedPhraseApi import com.tangem.feature.onboarding.presentation.wallet2.viewmodel.SeedPhraseViewModel @@ -12,19 +13,22 @@ import com.tangem.tap.features.onboarding.products.wallet.redux.OnboardingWallet [REDACTED_AUTHOR] */ internal class OnboardingSeedPhraseStateHandler( - private val walletFragment: OnboardingWalletFragment, private val onboardingSeedPhraseApi: OnboardingSeedPhraseApi = OnboardingSeedPhrase(), ) { - fun newState(state: OnboardingWalletState, seedPhraseViewModel: SeedPhraseViewModel) { + fun newState( + walletFragment: OnboardingWalletFragment, + state: OnboardingWalletState, + seedPhraseViewModel: SeedPhraseViewModel, + ) { if (state.step == OnboardingWalletStep.CreateWallet && !seedPhraseViewModel.isFinished) { - switchToWallet2SeedPhraseOnboarding(state, seedPhraseViewModel) + switchToWallet2SeedPhraseOnboarding(walletFragment, seedPhraseViewModel, state.getMaxProgress()) } else { - switchToWalletOnboarding(state) + switchToWalletOnboarding(walletFragment, state) } } - private fun switchToWalletOnboarding(state: OnboardingWalletState) { + private fun switchToWalletOnboarding(walletFragment: OnboardingWalletFragment, state: OnboardingWalletState) { walletFragment.bindingSeedPhrase.onboardingSeedPhraseContainer.hide() walletFragment.pbBinding.pbState.show() walletFragment.binding.onboardingWalletContainer.show() @@ -32,16 +36,18 @@ internal class OnboardingSeedPhraseStateHandler( } private fun switchToWallet2SeedPhraseOnboarding( - state: OnboardingWalletState, - seedPhraseViewModel: SeedPhraseViewModel, + walletFragment: OnboardingWalletFragment, + viewModel: SeedPhraseViewModel, + onboardingWalletMaxProgress: Int, ) { walletFragment.pbBinding.pbState.hide() walletFragment.binding.onboardingWalletContainer.hide() walletFragment.bindingSeedPhrase.onboardingSeedPhraseContainer.show() walletFragment.bindingSeedPhrase.onboardingSeedPhraseContainer.setContent { onboardingSeedPhraseApi.ScreenContent( - viewModel = seedPhraseViewModel, - maxProgress = state.getMaxProgress(), + uiState = viewModel.uiState, + subScreen = viewModel.currentScreen.collectAsState().value, + progress = viewModel.progress.collectAsState(0).value.toFloat() / onboardingWalletMaxProgress, ) } } diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhrase.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhrase.kt index 5775e476a7..2db7541c5a 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhrase.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhrase.kt @@ -1,23 +1,14 @@ package com.tangem.feature.onboarding.api import androidx.activity.compose.BackHandler -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.layout.* import androidx.compose.material.LinearProgressIndicator import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.ui.Modifier import com.tangem.core.ui.res.TangemTheme -import com.tangem.feature.onboarding.presentation.wallet2.ui.AboutSeedPhraseScreen -import com.tangem.feature.onboarding.presentation.wallet2.ui.CheckSeedPhraseScreen -import com.tangem.feature.onboarding.presentation.wallet2.ui.ImportSeedPhraseScreen -import com.tangem.feature.onboarding.presentation.wallet2.ui.IntroScreen -import com.tangem.feature.onboarding.presentation.wallet2.ui.YourSeedPhraseScreen +import com.tangem.feature.onboarding.presentation.wallet2.model.OnboardingSeedPhraseState +import com.tangem.feature.onboarding.presentation.wallet2.ui.* import com.tangem.feature.onboarding.presentation.wallet2.viewmodel.SeedPhraseScreen -import com.tangem.feature.onboarding.presentation.wallet2.viewmodel.SeedPhraseViewModel /** [REDACTED_AUTHOR] @@ -25,19 +16,19 @@ import com.tangem.feature.onboarding.presentation.wallet2.viewmodel.SeedPhraseVi class OnboardingSeedPhrase : OnboardingSeedPhraseApi { @Composable - override fun ScreenContent(viewModel: SeedPhraseViewModel, maxProgress: Int) { - BackHandler(onBack = viewModel.uiState.onBackClick) + override fun ScreenContent(uiState: OnboardingSeedPhraseState, subScreen: SeedPhraseScreen, progress: Float) { + BackHandler(onBack = uiState.onBackClick) TangemTheme { Column { - ProgressIndicator(viewModel.progress.collectAsState(0).value, maxProgress) - Content(viewModel) + ProgressIndicator(progress) + Content(subScreen, uiState) } } } } @Composable -private fun ProgressIndicator(progress: Int, maxProgress: Int) { +private fun ProgressIndicator(progress: Float) { Box( modifier = Modifier .fillMaxWidth() @@ -50,38 +41,38 @@ private fun ProgressIndicator(progress: Int, maxProgress: Int) { .padding(horizontal = TangemTheme.dimens.size16), color = TangemTheme.colors.background.action, backgroundColor = TangemTheme.colors.background.action.copy(alpha = 0.081f), - progress = progress.toFloat() / maxProgress, + progress = progress, ) } } @Composable -private fun Content(viewModel: SeedPhraseViewModel) { - when (viewModel.currentScreen.collectAsState().value) { +private fun Content(screen: SeedPhraseScreen, uiState: OnboardingSeedPhraseState) { + when (screen) { SeedPhraseScreen.Intro -> { IntroScreen( - state = viewModel.uiState.introState, + state = uiState.introState, ) } SeedPhraseScreen.AboutSeedPhrase -> { AboutSeedPhraseScreen( - state = viewModel.uiState.aboutState, + state = uiState.aboutState, ) } SeedPhraseScreen.YourSeedPhrase -> { YourSeedPhraseScreen( - state = viewModel.uiState.yourSeedPhraseState, + state = uiState.yourSeedPhraseState, ) } SeedPhraseScreen.CheckSeedPhrase -> { CheckSeedPhraseScreen( - state = viewModel.uiState.checkSeedPhraseState, + state = uiState.checkSeedPhraseState, ) } SeedPhraseScreen.ImportSeedPhrase -> { ImportSeedPhraseScreen( - state = viewModel.uiState.importSeedPhraseState, + state = uiState.importSeedPhraseState, ) } } diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhraseApi.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhraseApi.kt index 364cfa1a65..43ac6afa71 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhraseApi.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/api/OnboardingSeedPhraseApi.kt @@ -1,7 +1,8 @@ package com.tangem.feature.onboarding.api import androidx.compose.runtime.Composable -import com.tangem.feature.onboarding.presentation.wallet2.viewmodel.SeedPhraseViewModel +import com.tangem.feature.onboarding.presentation.wallet2.model.OnboardingSeedPhraseState +import com.tangem.feature.onboarding.presentation.wallet2.viewmodel.SeedPhraseScreen /** [REDACTED_AUTHOR] @@ -9,5 +10,5 @@ import com.tangem.feature.onboarding.presentation.wallet2.viewmodel.SeedPhraseVi interface OnboardingSeedPhraseApi { @Suppress("TopLevelComposableFunctions") @Composable - fun ScreenContent(viewModel: SeedPhraseViewModel, maxProgress: Int) + fun ScreenContent(uiState: OnboardingSeedPhraseState, subScreen: SeedPhraseScreen, progress: Float) } \ No newline at end of file