[#393] Update Compose Material3 to version 1.0.0-alpha13

- Update Compose Material3 dependency
- Increase compile and target SDK versions to 32
- Use Scaffold paddingValues to move content below TopBar
- Re-enable ignored test check_all_ui_elements_displayed()
This commit is contained in:
Honza Rychnovsky 2022-06-09 18:31:44 +02:00 committed by GitHub
parent f77d010f6d
commit 2145698bba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 136 additions and 43 deletions

View File

@ -18,7 +18,7 @@ class TargetApiTest {
// target the new API level.
assertThat(
ApplicationProvider.getApplicationContext<Application>().applicationInfo.targetSdkVersion,
lessThanOrEqualTo(Build.VERSION_CODES.S)
lessThanOrEqualTo(Build.VERSION_CODES.S_V2)
)
}
}

View File

@ -72,8 +72,8 @@ SDK_INCLUDED_BUILD_PATH=
# with old devices.
ANDROID_LIB_MIN_SDK_VERSION=24
ANDROID_APP_MIN_SDK_VERSION=27
ANDROID_TARGET_SDK_VERSION=31
ANDROID_COMPILE_SDK_VERSION=31
ANDROID_TARGET_SDK_VERSION=32
ANDROID_COMPILE_SDK_VERSION=32
ANDROID_NDK_VERSION=23.0.7599858
@ -93,7 +93,7 @@ ANDROIDX_ANNOTATION_VERSION=1.3.0
ANDROIDX_APPCOMPAT_VERSION=1.4.1
ANDROIDX_CAMERA_VERSION=1.1.0-rc01
ANDROIDX_COMPOSE_COMPILER_VERSION=1.2.0-beta03
ANDROIDX_COMPOSE_MATERIAL3_VERSION=1.0.0-alpha09
ANDROIDX_COMPOSE_MATERIAL3_VERSION=1.0.0-alpha13
ANDROIDX_COMPOSE_VERSION=1.1.1
ANDROIDX_CONSTRAINTLAYOUT_VERSION=1.0.0
ANDROIDX_CORE_VERSION=1.7.0

View File

@ -16,7 +16,6 @@ import co.electriccoin.zcash.ui.screen.scan.ScanTag
import co.electriccoin.zcash.ui.screen.scan.model.ScanState
import co.electriccoin.zcash.ui.test.getStringResource
import org.junit.Assert.assertEquals
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
@ -49,8 +48,6 @@ class ScanViewBasicTest : UiTestPrerequisites() {
@Test
@MediumTest
// https://github.com/zcash/secant-android-wallet/issues/447
@Ignore
fun check_all_ui_elements_displayed() {
newTestSetup()

View File

@ -1,8 +1,10 @@
package co.electriccoin.zcash.ui.screen.about.view
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
@ -46,8 +48,11 @@ fun About(
) {
Scaffold(topBar = {
AboutTopAppBar(onBack = goBack)
}) {
AboutMainContent(versionInfo)
}) { paddingValues ->
AboutMainContent(
paddingValues,
versionInfo
)
}
}
@ -69,8 +74,12 @@ private fun AboutTopAppBar(onBack: () -> Unit) {
}
@Composable
fun AboutMainContent(versionInfo: VersionInfo) {
Column(Modifier.verticalScroll(rememberScrollState())) {
fun AboutMainContent(paddingValues: PaddingValues, versionInfo: VersionInfo) {
Column(
Modifier
.verticalScroll(rememberScrollState())
.padding(top = paddingValues.calculateTopPadding())
) {
Icon(painterResource(id = R.drawable.ic_launcher_adaptive_foreground), contentDescription = null)
Text(stringResource(id = R.string.app_name))

View File

@ -1,9 +1,11 @@
package co.electriccoin.zcash.ui.screen.home.view
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
@ -75,8 +77,9 @@ fun Home(
) {
Scaffold(topBar = {
HomeTopAppBar(isDebugMenuEnabled)
}) {
}) { paddingValues ->
HomeMainContent(
paddingValues,
walletSnapshot,
transactionHistory,
goScan = goScan,
@ -133,6 +136,7 @@ private fun DebugMenu() {
@Suppress("LongParameterList")
@Composable
private fun HomeMainContent(
paddingValues: PaddingValues,
walletSnapshot: WalletSnapshot,
transactionHistory: List<Transaction>,
goScan: () -> Unit,
@ -141,7 +145,11 @@ private fun HomeMainContent(
goRequest: () -> Unit
) {
Column {
Row(Modifier.fillMaxWidth()) {
Row(
Modifier
.fillMaxWidth()
.padding(top = paddingValues.calculateTopPadding())
) {
IconButton(goScan) {
Icon(
imageVector = Icons.Filled.QrCodeScanner,

View File

@ -1,8 +1,10 @@
package co.electriccoin.zcash.ui.screen.request.view
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
@ -65,8 +67,9 @@ fun Request(
) {
Scaffold(topBar = {
RequestTopAppBar(onBack = goBack)
}) {
}) { paddingValues ->
RequestMainContent(
paddingValues,
myAddress,
onCreateAndSend = onCreateAndSend
)
@ -95,6 +98,7 @@ private fun RequestTopAppBar(onBack: () -> Unit) {
// TODO [#288]: TextField component can't do long-press backspace.
@Composable
private fun RequestMainContent(
paddingValues: PaddingValues,
myAddress: WalletAddress.Unified,
onCreateAndSend: (ZecRequest) -> Unit
) {
@ -105,7 +109,11 @@ private fun RequestMainContent(
var amountZecString by rememberSaveable { mutableStateOf("") }
var message by rememberSaveable { mutableStateOf("") }
Column(Modifier.fillMaxHeight()) {
Column(
Modifier
.fillMaxHeight()
.padding(top = paddingValues.calculateTopPadding())
) {
// TODO [#289]: Crash occurs while typed more than some acceptable amount to this field.
TextField(
value = amountZecString,

View File

@ -5,11 +5,13 @@ import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.rememberScrollState
@ -116,8 +118,13 @@ fun RestoreWallet(
if (seedPhraseValidation !is SeedPhraseValidation.Valid) {
Scaffold(topBar = {
RestoreTopAppBar(onBack = onBack, onClear = { userWordList.set(emptyList()) })
}) {
RestoreMainContent(completeWordList, userWordList, paste)
}) { paddingValues ->
RestoreMainContent(
paddingValues,
completeWordList,
userWordList,
paste
)
}
} else {
// In some cases we need to hide the software keyboard manually, as it stays shown after
@ -152,6 +159,7 @@ private fun RestoreTopAppBar(onBack: () -> Unit, onClear: () -> Unit) {
@Suppress("UNUSED_PARAMETER")
@Composable
private fun RestoreMainContent(
paddingValues: PaddingValues,
completeWordList: Set<String>,
userWordList: WordList,
paste: () -> String?
@ -169,7 +177,10 @@ private fun RestoreMainContent(
val focusRequester = remember { FocusRequester() }
Column {
Column(
Modifier
.padding(top = paddingValues.calculateTopPadding())
) {
Text(text = stringResource(id = R.string.restore_instructions))
Box(

View File

@ -13,6 +13,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
@ -102,8 +103,9 @@ fun Scan(
Scaffold(
topBar = { ScanTopAppBar(onBack = onBack) },
snackbarHost = { SnackbarHost(snackbarHostState) },
) {
) { paddingValues ->
ScanMainContent(
paddingValues,
onScanned,
onOpenSettings,
onBack,
@ -174,9 +176,10 @@ private fun ScanTopAppBar(onBack: () -> Unit) {
}
@OptIn(ExperimentalPermissionsApi::class)
@Suppress("MagicNumber", "LongMethod")
@Suppress("MagicNumber", "LongMethod", "LongParameterList")
@Composable
private fun ScanMainContent(
paddingValues: PaddingValues,
onScanned: (String) -> Unit,
onOpenSettings: () -> Unit,
onBack: () -> Unit,
@ -225,6 +228,7 @@ private fun ScanMainContent(
modifier = Modifier
.fillMaxSize()
.background(Color.Black)
.padding(top = paddingValues.calculateTopPadding())
) {
val (frame, bottomItems) = createRefs()

View File

@ -1,6 +1,8 @@
package co.electriccoin.zcash.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.material.icons.Icons
@ -52,8 +54,12 @@ fun Seed(
) {
Scaffold(topBar = {
SeedTopAppBar(onBack = onBack)
}) {
SeedMainContent(persistableWallet = persistableWallet, onCopyToClipboard = onCopyToClipboard)
}) { paddingValues ->
SeedMainContent(
paddingValues,
persistableWallet = persistableWallet,
onCopyToClipboard = onCopyToClipboard
)
}
}
@ -76,10 +82,15 @@ private fun SeedTopAppBar(onBack: () -> Unit) {
@Composable
private fun SeedMainContent(
paddingValues: PaddingValues,
persistableWallet: PersistableWallet,
onCopyToClipboard: () -> Unit
) {
Column(Modifier.verticalScroll(rememberScrollState())) {
Column(
Modifier
.verticalScroll(rememberScrollState())
.padding(top = paddingValues.calculateTopPadding())
) {
Header(stringResource(R.string.seed_header))
Body(stringResource(R.string.seed_body))

View File

@ -1,10 +1,12 @@
package co.electriccoin.zcash.ui.screen.send.view
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
@ -82,8 +84,9 @@ fun Send(
SendStage.Confirmation -> setSendStage(SendStage.Form)
}
})
}) {
}) { paddingValues ->
SendMainContent(
paddingValues,
mySpendableBalance,
sendStage,
setSendStage,
@ -111,6 +114,7 @@ private fun SendTopAppBar(onBack: () -> Unit) {
@Composable
private fun SendMainContent(
paddingValues: PaddingValues,
myBalance: Zatoshi,
sendStage: SendStage,
setSendStage: (SendStage) -> Unit,
@ -120,15 +124,18 @@ private fun SendMainContent(
if (sendStage == SendStage.Form || null == zecSend) {
SendForm(
paddingValues,
myBalance = myBalance,
previousZecSend = zecSend,
onCreateAndSend = {
setSendStage(SendStage.Confirmation)
setZecSend(it)
}
)
previousZecSend = zecSend
) {
setSendStage(SendStage.Confirmation)
setZecSend(it)
}
} else {
Confirmation(zecSend) {
Confirmation(
paddingValues,
zecSend
) {
onCreateAndSend(zecSend)
}
}
@ -140,6 +147,7 @@ private fun SendMainContent(
@Suppress("LongMethod")
@Composable
private fun SendForm(
paddingValues: PaddingValues,
myBalance: Zatoshi,
previousZecSend: ZecSend?,
onCreateAndSend: (ZecSend) -> Unit
@ -160,7 +168,11 @@ private fun SendForm(
mutableStateOf<Set<ZecSendExt.ZecSendValidation.Invalid.ValidationError>>(emptySet())
}
Column(Modifier.fillMaxHeight()) {
Column(
Modifier
.fillMaxHeight()
.padding(top = paddingValues.calculateTopPadding())
) {
Row(Modifier.fillMaxWidth()) {
Text(text = myBalance.toZecString())
}
@ -228,8 +240,15 @@ private fun SendForm(
}
@Composable
private fun Confirmation(zecSend: ZecSend, onConfirmation: () -> Unit) {
Column {
private fun Confirmation(
paddingValues: PaddingValues,
zecSend: ZecSend,
onConfirmation: () -> Unit
) {
Column(
Modifier
.padding(top = paddingValues.calculateTopPadding())
) {
Text(
stringResource(
R.string.send_amount_and_address_format,

View File

@ -1,6 +1,8 @@
package co.electriccoin.zcash.ui.screen.settings.view
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api
@ -10,6 +12,7 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.SmallTopAppBar
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import co.electriccoin.zcash.ui.R
@ -44,8 +47,9 @@ fun Settings(
) {
Scaffold(topBar = {
SettingsTopAppBar(onBack = onBack)
}) {
}) { paddingValues ->
SettingsMainContent(
paddingValues,
onBackupWallet = onBackupWallet,
onWipeWallet = onWipeWallet,
onRescanWallet = onRescanWallet
@ -72,11 +76,15 @@ private fun SettingsTopAppBar(onBack: () -> Unit) {
@Composable
private fun SettingsMainContent(
paddingValues: PaddingValues,
onBackupWallet: () -> Unit,
onWipeWallet: () -> Unit,
onRescanWallet: () -> Unit
) {
Column {
Column(
Modifier
.padding(top = paddingValues.calculateTopPadding())
) {
PrimaryButton(onClick = onBackupWallet, text = stringResource(id = R.string.settings_backup))
DangerousButton(onClick = onWipeWallet, text = stringResource(id = R.string.settings_wipe))
TertiaryButton(onClick = onRescanWallet, text = stringResource(id = R.string.settings_rescan))

View File

@ -1,7 +1,9 @@
package co.electriccoin.zcash.ui.screen.support.view
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.Send
@ -63,8 +65,12 @@ fun Support(
)
}
}
) {
SupportMainContent(message, setMessage)
) { paddingValues ->
SupportMainContent(
paddingValues,
message,
setMessage
)
if (isShowingDialog) {
SupportConfirmationDialog(
@ -94,10 +100,14 @@ private fun SupportTopAppBar(onBack: () -> Unit) {
@Composable
private fun SupportMainContent(
paddingValues: PaddingValues,
message: String,
setMessage: (String) -> Unit
) {
Column {
Column(
Modifier
.padding(top = paddingValues.calculateTopPadding())
) {
TextField(
value = message,
onValueChange = setMessage,

View File

@ -5,9 +5,11 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api
@ -81,8 +83,11 @@ fun Update(
onLater
)
}
) {
UpdateContentNormal(onReference)
) { paddingValues ->
UpdateContentNormal(
paddingValues,
onReference
)
}
UpdateOverlayRunning(updateInfo)
}
@ -161,11 +166,14 @@ private fun UpdateBottomAppBar(
@Composable
private fun UpdateContentNormal(
paddingValues: PaddingValues,
onReference: () -> Unit
) {
Column(
Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
Modifier
.fillMaxWidth()
.padding(top = paddingValues.calculateTopPadding()),
horizontalAlignment = Alignment.CenterHorizontally
) {
// TODO [#17]: This suppression and magic number will get replaced once we have real assets
@Suppress("MagicNumber")