Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-10 12:14:58 +03:00
parent 3db1a0e26f
commit 9f026215c1
10 changed files with 129 additions and 103 deletions

View file

@ -10,6 +10,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.airbnb.lottie.compose.LottieAnimation
@ -59,6 +60,7 @@ internal fun OnboardingDone(onContinueClick: () -> Unit, modifier: Modifier = Mo
text = stringResource(R.string.onboarding_subtitle_success_tangem_wallet_onboarding),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
)
SpacerH(72.dp)
}

View file

@ -1,6 +1,8 @@
package com.tangem.features.onboarding.v2.multiwallet.impl.child.backup.ui
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@ -55,7 +57,8 @@ private fun ColumnScope.Content(state: MultiWalletBackupUM) {
Column(
Modifier
.fillMaxWidth()
.padding(start = 32.dp, end = 32.dp, bottom = 74.dp)
.verticalScroll(rememberScrollState())
.padding(start = 32.dp, end = 32.dp, bottom = 16.dp)
.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally,
) {

View file

@ -1,6 +1,8 @@
package com.tangem.features.onboarding.v2.multiwallet.impl.child.chooseoption.ui
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@ -26,7 +28,8 @@ fun Wallet1ChooseOption(onSkipClick: () -> Unit, onBackupClick: () -> Unit, modi
Column(
Modifier
.fillMaxWidth()
.padding(start = 32.dp, end = 32.dp, bottom = 24.dp)
.verticalScroll(rememberScrollState())
.padding(start = 32.dp, end = 32.dp, bottom = 16.dp)
.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally,
) {

View file

@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.arkivanov.essenty.lifecycle.doOnStart
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.ui.extensions.resourceReference
@ -25,17 +26,19 @@ internal class MultiWalletCreateWalletComponent(
private val model: MultiWalletCreateWalletModel = getOrCreateModel(params)
init {
params.innerNavigation.update {
it.copy(
stackSize = 2,
stackMaxSize = 8,
lifecycle.doOnStart {
params.innerNavigation.update {
it.copy(
stackSize = 2,
stackMaxSize = 8,
)
}
params.parentParams.titleProvider.changeTitle(
text = resourceReference(R.string.onboarding_create_wallet_header),
)
}
params.parentParams.titleProvider.changeTitle(
text = resourceReference(R.string.onboarding_create_wallet_header),
)
componentScope.launch {
model.onDone.collect(onNextStep)
}

View file

@ -1,6 +1,8 @@
package com.tangem.features.onboarding.v2.multiwallet.impl.child.createwallet.ui
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@ -48,7 +50,8 @@ internal fun MultiWalletCreateWallet(state: MultiWalletCreateWalletUM, modifier:
Column(
Modifier
.fillMaxWidth()
.padding(start = 32.dp, end = 32.dp, bottom = 24.dp)
.verticalScroll(rememberScrollState())
.padding(start = 32.dp, end = 32.dp, bottom = 16.dp)
.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally,
) {

View file

@ -1,6 +1,8 @@
package com.tangem.features.onboarding.v2.multiwallet.impl.child.finalize.ui
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@ -27,7 +29,8 @@ internal fun MultiWalletFinalize(state: MultiWalletFinalizeUM, modifier: Modifie
Column(
Modifier
.fillMaxWidth()
.padding(start = 32.dp, end = 32.dp, bottom = 74.dp)
.padding(start = 32.dp, end = 32.dp, bottom = 16.dp)
.verticalScroll(rememberScrollState())
.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally,
) {

View file

@ -55,49 +55,52 @@ internal fun MultiWalletSeedPhraseImport(state: MultiWalletSeedPhraseUM.Import,
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState()),
.imePadding(),
) {
Text(
text = stringResource(id = R.string.onboarding_seed_import_message),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
modifier = Modifier
.padding(start = 36.dp, end = 36.dp, top = 24.dp, bottom = 16.dp)
.fillMaxWidth(),
)
PhraseBlock(
state = state,
modifier = Modifier.padding(horizontal = 16.dp),
)
OutlineTextFieldWithIcon(
modifier = modifier
.padding(horizontal = 16.dp)
.fillMaxWidth(),
value = state.passPhrase,
onValueChange = state.passPhraseChange,
iconResId = R.drawable.ic_information_24,
iconColor = TangemTheme.colors.icon.informative,
label = stringResource(id = R.string.common_passphrase),
placeholder = stringResource(id = R.string.send_optional_field),
onIconClick = state.onPassphraseInfoClick,
)
Box(Modifier.weight(1f)) {
PrimaryButtonIconEnd(
Column(
Modifier
.verticalScroll(rememberScrollState())
.weight(1f),
) {
Text(
text = stringResource(id = R.string.onboarding_seed_import_message),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
modifier = Modifier
.align(Alignment.BottomStart)
.padding(16.dp)
.padding(start = 36.dp, end = 36.dp, top = 24.dp, bottom = 16.dp)
.fillMaxWidth(),
text = stringResource(id = R.string.common_import),
iconResId = R.drawable.ic_tangem_24,
enabled = state.createWalletEnabled,
showProgress = state.createWalletProgress,
onClick = state.createWalletClick,
)
PhraseBlock(
state = state,
modifier = Modifier.padding(horizontal = 16.dp),
)
OutlineTextFieldWithIcon(
modifier = modifier
.padding(horizontal = 16.dp)
.fillMaxWidth(),
value = state.passPhrase,
onValueChange = state.passPhraseChange,
iconResId = R.drawable.ic_information_24,
iconColor = TangemTheme.colors.icon.informative,
label = stringResource(id = R.string.common_passphrase),
placeholder = stringResource(id = R.string.send_optional_field),
onIconClick = state.onPassphraseInfoClick,
)
}
PrimaryButtonIconEnd(
modifier = Modifier
.padding(16.dp)
.fillMaxWidth(),
text = stringResource(id = R.string.common_import),
iconResId = R.drawable.ic_tangem_24,
enabled = state.createWalletEnabled,
showProgress = state.createWalletProgress,
onClick = state.createWalletClick,
)
}
val keyboard by keyboardAsState()

View file

@ -31,20 +31,26 @@ internal fun MultiWalletSeedPhraseWords(
modifier: Modifier = Modifier,
) {
Column(modifier.fillMaxSize()) {
SegmentSeedBlock(
modifier = Modifier.padding(vertical = 20.dp),
state = state,
)
TitleBlock(state)
SeedPhraseGridBlock(
mnemonicGridItems = state.words,
Column(
modifier = Modifier
.weight(1f)
.fillMaxWidth()
.padding(top = 20.dp, bottom = 32.dp),
)
.verticalScroll(rememberScrollState())
.imePadding()
.weight(1f),
) {
SegmentSeedBlock(
modifier = Modifier.padding(vertical = 20.dp),
state = state,
)
TitleBlock(state)
SeedPhraseGridBlock(
mnemonicGridItems = state.words,
modifier = Modifier
.fillMaxWidth()
.padding(top = 20.dp, bottom = 32.dp),
)
}
PrimaryButton(
modifier = Modifier
@ -118,8 +124,7 @@ private fun TitleBlock(state: MultiWalletSeedPhraseUM.GenerateSeedPhrase, modifi
@Composable
private fun SeedPhraseGridBlock(mnemonicGridItems: ImmutableList<MnemonicGridItem>, modifier: Modifier = Modifier) {
VerticalGrid(
modifier = modifier
.verticalScroll(rememberScrollState()),
modifier = modifier,
items = mnemonicGridItems,
) { item ->
Row(

View file

@ -5,7 +5,6 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.TextFieldValue
@ -48,48 +47,50 @@ internal fun MultiWalletSeedPhraseWordsCheck(
Column(
modifier = modifier
.fillMaxSize()
.verticalScroll(rememberScrollState()),
.imePadding(),
) {
Text(
text = stringResource(R.string.onboarding_seed_user_validation_title),
style = TangemTheme.typography.h2,
color = TangemTheme.colors.text.primary1,
textAlign = TextAlign.Center,
modifier = Modifier
.padding(top = 48.dp, start = 36.dp, end = 36.dp, bottom = 16.dp)
.fillMaxWidth(),
)
Text(
text = stringResource(R.string.onboarding_seed_user_validation_message),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
modifier = Modifier
.padding(horizontal = 36.dp)
.fillMaxWidth(),
)
Fields(
state = state,
modifier = Modifier
.padding(vertical = 30.dp, horizontal = 16.dp),
)
Box(
Modifier.weight(1f),
Column(
Modifier
.verticalScroll(rememberScrollState())
.weight(1f),
) {
PrimaryButtonIconEnd(
Text(
text = stringResource(R.string.onboarding_seed_user_validation_title),
style = TangemTheme.typography.h2,
color = TangemTheme.colors.text.primary1,
textAlign = TextAlign.Center,
modifier = Modifier
.align(Alignment.BottomStart)
.padding(16.dp)
.padding(top = 48.dp, start = 36.dp, end = 36.dp, bottom = 16.dp)
.fillMaxWidth(),
text = stringResource(id = R.string.onboarding_create_wallet_button_create_wallet),
iconResId = R.drawable.ic_tangem_24,
enabled = state.createWalletButtonEnabled,
showProgress = state.createWalletButtonProgress,
onClick = state.onCreateWalletButtonClick,
)
Text(
text = stringResource(R.string.onboarding_seed_user_validation_message),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
modifier = Modifier
.padding(horizontal = 36.dp)
.fillMaxWidth(),
)
Fields(
state = state,
modifier = Modifier
.padding(vertical = 30.dp, horizontal = 16.dp),
)
}
PrimaryButtonIconEnd(
modifier = Modifier
.padding(16.dp)
.imePadding()
.fillMaxWidth(),
text = stringResource(id = R.string.onboarding_create_wallet_button_create_wallet),
iconResId = R.drawable.ic_tangem_24,
enabled = state.createWalletButtonEnabled,
showProgress = state.createWalletButtonProgress,
onClick = state.onCreateWalletButtonClick,
)
}
}

View file

@ -49,9 +49,9 @@ internal fun OnboardingMultiWallet(
url2 = state.artwork2Url,
url3 = state.artwork3Url,
modifier = Modifier
.weight(.56f)
.padding(horizontal = 34.dp)
.padding(top = 20.dp)
.weight(.36f)
.fillMaxWidth(),
state = artworksState,
)