zcash-android-wallet-sdk/demo-app/src/main/java/cash/z/ecc/android/sdk/demoapp/ui/screen/seed/view/ConfigureSeedView.kt

98 lines
2.9 KiB
Kotlin

package cash.z.ecc.android.sdk.demoapp.ui.screen.seed.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.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import cash.z.ecc.android.sdk.demoapp.R
import cash.z.ecc.android.sdk.demoapp.fixture.WalletFixture
import cash.z.ecc.android.sdk.demoapp.model.PersistableWallet
import cash.z.ecc.android.sdk.demoapp.model.SeedPhrase
import cash.z.ecc.android.sdk.model.ZcashNetwork
@Preview
@Composable
fun ComposablePreview() {
MaterialTheme {
Seed(
ZcashNetwork.Mainnet,
onExistingWallet = {},
onNewWallet = {}
)
}
}
@Composable
@OptIn(ExperimentalMaterial3Api::class)
fun Seed(
zcashNetwork: ZcashNetwork,
onExistingWallet: (PersistableWallet) -> Unit,
onNewWallet: () -> Unit
) {
Scaffold(topBar = {
ConfigureSeedTopAppBar()
}) { paddingValues ->
ConfigureSeedMainContent(
paddingValues = paddingValues,
zcashNetwork = zcashNetwork,
onExistingWallet = onExistingWallet,
onNewWallet = onNewWallet
)
}
}
@Composable
@OptIn(ExperimentalMaterial3Api::class)
private fun ConfigureSeedTopAppBar() {
TopAppBar(
title = { Text(text = stringResource(id = R.string.configure_seed)) }
)
}
@Composable
private fun ConfigureSeedMainContent(
paddingValues: PaddingValues,
zcashNetwork: ZcashNetwork,
onExistingWallet: (PersistableWallet) -> Unit,
onNewWallet: () -> Unit
) {
Column(
Modifier
.verticalScroll(rememberScrollState())
.padding(top = paddingValues.calculateTopPadding())
) {
Button(
onClick = {
val newWallet = PersistableWallet(zcashNetwork, null, SeedPhrase.new(WalletFixture.Alice.seedPhrase))
onExistingWallet(newWallet)
}
) {
Text(text = stringResource(id = R.string.person_alyssa))
}
Button(
onClick = {
val newWallet = PersistableWallet(zcashNetwork, null, SeedPhrase.new(WalletFixture.Alice.seedPhrase))
onExistingWallet(newWallet)
}
) {
Text(text = stringResource(R.string.person_ben))
}
Button(
onClick = onNewWallet
) {
Text(text = stringResource(id = R.string.seed_random))
}
}
}