Updated on 2026-08-14

This commit is contained in:
Tangem 2023-05-19 13:18:51 +03:00
parent 35e3ff8ad1
commit 875ccb2219
3 changed files with 34 additions and 36 deletions

View file

@ -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,
)
}
}

View file

@ -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,
)
}
}

View file

@ -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)
}