160 lines
4.8 KiB
Kotlin
160 lines
4.8 KiB
Kotlin
@file:Suppress("TooManyFunctions")
|
|
|
|
package co.electriccoin.zcash.ui.screen.backup.view
|
|
|
|
import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.PaddingValues
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.rememberScrollState
|
|
import androidx.compose.foundation.verticalScroll
|
|
import androidx.compose.material.icons.Icons
|
|
import androidx.compose.material.icons.filled.MoreVert
|
|
import androidx.compose.material3.DropdownMenu
|
|
import androidx.compose.material3.DropdownMenuItem
|
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
|
import androidx.compose.material3.Icon
|
|
import androidx.compose.material3.IconButton
|
|
import androidx.compose.material3.Scaffold
|
|
import androidx.compose.material3.Text
|
|
import androidx.compose.material3.TopAppBar
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.mutableStateOf
|
|
import androidx.compose.runtime.saveable.rememberSaveable
|
|
import androidx.compose.runtime.setValue
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.res.stringResource
|
|
import androidx.compose.ui.tooling.preview.Devices
|
|
import androidx.compose.ui.tooling.preview.Preview
|
|
import cash.z.ecc.android.sdk.model.PersistableWallet
|
|
import cash.z.ecc.sdk.fixture.PersistableWalletFixture
|
|
import co.electriccoin.zcash.ui.R
|
|
import co.electriccoin.zcash.ui.common.SecureScreen
|
|
import co.electriccoin.zcash.ui.design.component.Body
|
|
import co.electriccoin.zcash.ui.design.component.ChipGrid
|
|
import co.electriccoin.zcash.ui.design.component.GradientSurface
|
|
import co.electriccoin.zcash.ui.design.component.PrimaryButton
|
|
import co.electriccoin.zcash.ui.design.theme.ZcashTheme
|
|
import kotlinx.collections.immutable.toPersistentList
|
|
|
|
@Preview(device = Devices.PIXEL_4)
|
|
@Composable
|
|
fun ComposablePreviewShort() {
|
|
ZcashTheme(darkTheme = false) {
|
|
GradientSurface {
|
|
ShortNewWalletBackup(
|
|
PersistableWalletFixture.new(),
|
|
onCopyToClipboard = {},
|
|
onComplete = {},
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param onComplete Callback when the user has confirmed viewing the seed phrase.
|
|
*/
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
@Composable
|
|
fun ShortNewWalletBackup(
|
|
wallet: PersistableWallet,
|
|
onCopyToClipboard: () -> Unit,
|
|
onComplete: () -> Unit,
|
|
) {
|
|
Scaffold(
|
|
topBar = {
|
|
ShortNewWalletTopAppBar(
|
|
onCopyToClipboard = onCopyToClipboard,
|
|
)
|
|
},
|
|
bottomBar = {
|
|
ShortNewWalletBottomNav(
|
|
onComplete = onComplete,
|
|
)
|
|
}
|
|
) { paddingValues ->
|
|
ShortNewWalletMainContent(
|
|
paddingValues = paddingValues,
|
|
wallet = wallet,
|
|
)
|
|
}
|
|
}
|
|
|
|
@Composable
|
|
private fun ShortNewWalletMainContent(
|
|
paddingValues: PaddingValues,
|
|
wallet: PersistableWallet,
|
|
) {
|
|
Column(
|
|
Modifier
|
|
.padding(
|
|
top = paddingValues.calculateTopPadding(),
|
|
bottom = paddingValues.calculateBottomPadding()
|
|
)
|
|
) {
|
|
SeedPhrase(wallet)
|
|
}
|
|
}
|
|
|
|
@Composable
|
|
private fun SeedPhrase(persistableWallet: PersistableWallet) {
|
|
SecureScreen()
|
|
Column(
|
|
Modifier
|
|
.verticalScroll(rememberScrollState())
|
|
.padding(vertical = ZcashTheme.paddings.padding)
|
|
) {
|
|
Body(stringResource(R.string.new_wallet_short_body))
|
|
ChipGrid(persistableWallet.seedPhrase.split.toPersistentList())
|
|
}
|
|
}
|
|
|
|
@Composable
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
private fun ShortNewWalletTopAppBar(
|
|
onCopyToClipboard: () -> Unit,
|
|
) {
|
|
TopAppBar(
|
|
title = { Text(text = stringResource(id = R.string.new_wallet_short_header)) },
|
|
actions = {
|
|
CopySeedMenu(onCopyToClipboard)
|
|
}
|
|
)
|
|
}
|
|
|
|
@Composable
|
|
private fun CopySeedMenu(onCopyToClipboard: () -> Unit) {
|
|
Column {
|
|
var expanded by rememberSaveable { mutableStateOf(false) }
|
|
IconButton(onClick = { expanded = true }) {
|
|
Icon(
|
|
Icons.Default.MoreVert,
|
|
contentDescription = stringResource(R.string.new_wallet_toolbar_more_button_content_description)
|
|
)
|
|
}
|
|
|
|
DropdownMenu(
|
|
expanded = expanded,
|
|
onDismissRequest = { expanded = false }
|
|
) {
|
|
DropdownMenuItem(
|
|
text = { Text(stringResource(R.string.new_wallet_short_copy)) },
|
|
onClick = {
|
|
expanded = false
|
|
onCopyToClipboard()
|
|
}
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
@Suppress("LongParameterList")
|
|
@Composable
|
|
private fun ShortNewWalletBottomNav(
|
|
onComplete: () -> Unit
|
|
) {
|
|
Column {
|
|
PrimaryButton(onClick = onComplete, text = stringResource(R.string.new_wallet_short_button_finished))
|
|
}
|
|
}
|