From 4c942f39b030aef1e97b84fd49a32e0c4b1511fe Mon Sep 17 00:00:00 2001 From: jeffrey-signal Date: Wed, 3 Jun 2026 07:12:56 -0400 Subject: [PATCH] Elevate RegistrationScaffold footer surface when content scrolls underneath. --- .../screens/RegistrationScaffold.kt | 4 +- .../accountlocked/AccountLockedScreen.kt | 4 +- .../screens/aepentry/EnterAepScreen.kt | 4 +- .../AllowNotificationsScreen.kt | 72 +++++++++-------- .../screens/captcha/CaptchaScreen.kt | 1 + .../screens/linkaccount/LinkAccountScreen.kt | 79 ++++++++++++------- .../EnterLocalBackupV1PassphaseScreen.kt | 41 ++++++---- .../LocalBackupRestoreScaffold.kt | 4 +- .../screens/messagesync/MessageSyncScreen.kt | 50 ++++++++---- .../screens/permissions/PermissionsScreen.kt | 11 ++- .../phonenumber/PhoneNumberEntryScreen.kt | 4 +- .../screens/pincreation/PinCreationScreen.kt | 13 ++- .../screens/pinentry/PinEntryScreen.kt | 13 ++- .../quickrestore/QuickRestoreQrScreen.kt | 4 +- .../RemoteBackupRestoreScreen.kt | 4 +- .../ArchiveRestoreSelectionScreen.kt | 4 +- .../VerificationCodeScreen.kt | 4 +- 17 files changed, 184 insertions(+), 132 deletions(-) diff --git a/feature/registration/src/main/java/org/signal/registration/screens/RegistrationScaffold.kt b/feature/registration/src/main/java/org/signal/registration/screens/RegistrationScaffold.kt index 694da7d48f..c6fecf4778 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/RegistrationScaffold.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/RegistrationScaffold.kt @@ -154,13 +154,13 @@ object RegistrationScaffold { @Composable fun FooterSurface( - isContentScrolledUnder: Boolean, + isElevated: Boolean, modifier: Modifier = Modifier, content: @Composable () -> Unit ) { Surface( modifier = modifier.fillMaxWidth(), - shadowElevation = if (isContentScrolledUnder) 8.dp else 0.dp, + shadowElevation = if (isElevated) 8.dp else 0.dp, content = content ) } diff --git a/feature/registration/src/main/java/org/signal/registration/screens/accountlocked/AccountLockedScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/accountlocked/AccountLockedScreen.kt index a4d6997363..266aee5df8 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/accountlocked/AccountLockedScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/accountlocked/AccountLockedScreen.kt @@ -84,7 +84,7 @@ private fun OnePaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { Column( modifier = modifier @@ -146,7 +146,7 @@ private fun TwoPaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { Row( modifier = modifier diff --git a/feature/registration/src/main/java/org/signal/registration/screens/aepentry/EnterAepScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/aepentry/EnterAepScreen.kt index 8f14fb02c3..3f33264a0e 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/aepentry/EnterAepScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/aepentry/EnterAepScreen.kt @@ -97,7 +97,7 @@ private fun OnePaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { Row( modifier = Modifier @@ -160,7 +160,7 @@ private fun TwoPaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { Row( horizontalArrangement = Arrangement.End, diff --git a/feature/registration/src/main/java/org/signal/registration/screens/allownotifications/AllowNotificationsScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/allownotifications/AllowNotificationsScreen.kt index 39e0fa2eb9..88b375306c 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/allownotifications/AllowNotificationsScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/allownotifications/AllowNotificationsScreen.kt @@ -63,23 +63,25 @@ private fun OnePane(params: RegistrationScaffold.Params.OnePane, permissionState OnePaneRegistrationScaffold( params = params, + content = { paddingValues -> + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .verticalScroll(scrollState) + .padding(paddingValues) + ) { + FirstPaneContent() + SecondPaneContent() + } + }, footer = { FooterContent( permissionState = permissionState, + isElevated = scrollState.canScrollForward, onProceed = onProceed ) } - ) { paddingValues -> - Column( - horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier - .verticalScroll(scrollState) - .padding(paddingValues) - ) { - FirstPaneContent() - SecondPaneContent() - } - } + ) } @OptIn(ExperimentalPermissionsApi::class) @@ -111,6 +113,7 @@ private fun TwoPane(params: RegistrationScaffold.Params.TwoPane, permissionState footer = { FooterContent( permissionState = permissionState, + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, onProceed = onProceed ) } @@ -151,32 +154,37 @@ private fun SecondPaneContent( @Composable private fun FooterContent( permissionState: PermissionState, + isElevated: Boolean, onProceed: () -> Unit ) { - Row( - horizontalArrangement = spacedBy(56.dp), - modifier = Modifier.padding(56.dp) + RegistrationScaffold.FooterSurface( + isElevated = isElevated ) { - Spacer(modifier = Modifier.weight(1f)) - - TextButton( - onClick = onProceed, - modifier = Modifier.testTag(TestTags.ALLOW_NOTIFICATIONS_NOT_NOW_BUTTON) + Row( + horizontalArrangement = spacedBy(56.dp), + modifier = Modifier.padding(56.dp) ) { - Text(text = stringResource(R.string.AllowNotificationsScreen__not_now)) - } + Spacer(modifier = Modifier.weight(1f)) - Buttons.LargeTonal( - onClick = { - if (permissionState.status.isGranted) { - onProceed() - } else { - permissionState.launchPermissionRequest() - } - }, - modifier = Modifier.testTag(TestTags.ALLOW_NOTIFICATIONS_NEXT_BUTTON) - ) { - Text(text = stringResource(R.string.AllowNotificationsScreen__next)) + TextButton( + onClick = onProceed, + modifier = Modifier.testTag(TestTags.ALLOW_NOTIFICATIONS_NOT_NOW_BUTTON) + ) { + Text(text = stringResource(R.string.AllowNotificationsScreen__not_now)) + } + + Buttons.LargeTonal( + onClick = { + if (permissionState.status.isGranted) { + onProceed() + } else { + permissionState.launchPermissionRequest() + } + }, + modifier = Modifier.testTag(TestTags.ALLOW_NOTIFICATIONS_NEXT_BUTTON) + ) { + Text(text = stringResource(R.string.AllowNotificationsScreen__next)) + } } } } diff --git a/feature/registration/src/main/java/org/signal/registration/screens/captcha/CaptchaScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/captcha/CaptchaScreen.kt index d966bb3005..7f0aa551b6 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/captcha/CaptchaScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/captcha/CaptchaScreen.kt @@ -107,6 +107,7 @@ fun CaptchaScreen( CircularProgressIndicator(modifier = Modifier.size(48.dp)) } } + CaptchaLoadState.Error -> { Box( modifier = Modifier.fillMaxSize(), diff --git a/feature/registration/src/main/java/org/signal/registration/screens/linkaccount/LinkAccountScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/linkaccount/LinkAccountScreen.kt index 5a879ad692..112cc43cbb 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/linkaccount/LinkAccountScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/linkaccount/LinkAccountScreen.kt @@ -117,22 +117,28 @@ private fun OnePane( OnePaneRegistrationScaffold( params = params, - footer = { OnePaneFooterContent(onEvent = onEvent) } - ) { paddingValues -> - Column( - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = spacedBy(64.dp), - modifier = Modifier - .padding(paddingValues) - .verticalScroll(scrollState) - ) { - Title() + content = { paddingValues -> + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = spacedBy(64.dp), + modifier = Modifier + .padding(paddingValues) + .verticalScroll(scrollState) + ) { + Title() - QrCodeContent(state = state, onEvent = onEvent) + QrCodeContent(state = state, onEvent = onEvent) - Steps(verticalArrangement = spacedBy(32.dp), onEvent) + Steps(verticalArrangement = spacedBy(32.dp), onEvent) + } + }, + footer = { + OnePaneFooterContent( + isElevated = scrollState.canScrollForward, + onEvent = onEvent + ) } - } + ) } @Composable @@ -160,7 +166,12 @@ private fun TwoPane( .padding(paddingValues) ) }, - footer = { TwoPaneFooterContent(onEvent = onEvent) } + footer = { + TwoPaneFooterContent( + isElevated = false, + onEvent = onEvent + ) + } ) } @@ -454,37 +465,47 @@ fun getQrCodeSize(isInOverlay: Boolean): Dp { @Composable private fun OnePaneFooterContent( + isElevated: Boolean, onEvent: (LinkAccountScreenEvent) -> Unit, modifier: Modifier = Modifier ) { - Column( - horizontalAlignment = Alignment.CenterHorizontally, - modifier = modifier - .padding(start = 36.dp, end = 36.dp, bottom = 16.dp) - .fillMaxWidth() + RegistrationScaffold.FooterSurface( + isElevated = isElevated ) { - Row { - DontHaveSignal() + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = modifier + .padding(start = 36.dp, end = 36.dp, bottom = 16.dp) + .fillMaxWidth() + ) { + Row { + DontHaveSignal() + } + CreateAccount(onEvent) } - CreateAccount(onEvent) } } @Composable private fun TwoPaneFooterContent( + isElevated: Boolean, onEvent: (LinkAccountScreenEvent) -> Unit, modifier: Modifier = Modifier ) { - Row( - horizontalArrangement = spacedBy(8.dp), - modifier = modifier.padding(36.dp) + RegistrationScaffold.FooterSurface( + isElevated = isElevated ) { - Spacer(modifier = Modifier.weight(1f)) + Row( + horizontalArrangement = spacedBy(8.dp), + modifier = modifier.padding(36.dp) + ) { + Spacer(modifier = Modifier.weight(1f)) - DontHaveSignal() - CreateAccount(onEvent) + DontHaveSignal() + CreateAccount(onEvent) - Spacer(modifier = Modifier.weight(1f)) + Spacer(modifier = Modifier.weight(1f)) + } } } diff --git a/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/EnterLocalBackupV1PassphaseScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/EnterLocalBackupV1PassphaseScreen.kt index 53f9d0500f..62b094deda 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/EnterLocalBackupV1PassphaseScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/EnterLocalBackupV1PassphaseScreen.kt @@ -130,6 +130,7 @@ private fun OnePaneLayout( FooterButtons( isValid = isValid, passphrase = passphrase, + isElevated = scrollState.canScrollForward, onSubmit = onSubmit, onCancel = onCancel ) @@ -186,6 +187,7 @@ private fun TwoPaneLayout( FooterButtons( isValid = isValid, passphrase = passphrase, + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, onSubmit = onSubmit, onCancel = onCancel ) @@ -276,30 +278,35 @@ private fun PassphraseTextField( private fun FooterButtons( isValid: Boolean, passphrase: String, + isElevated: Boolean, onSubmit: (String) -> Unit, onCancel: () -> Unit ) { - Row( - horizontalArrangement = Arrangement.SpaceBetween, - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 24.dp, vertical = 16.dp) + RegistrationScaffold.FooterSurface( + isElevated = isElevated ) { - TextButton( - modifier = Modifier.weight(weight = 1f, fill = false), - onClick = onCancel, - shape = RoundedCornerShape(0.dp) + Row( + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp, vertical = 16.dp) ) { - Text(text = stringResource(R.string.LocalBackupRestoreScreen__no_passphrase)) - } + TextButton( + modifier = Modifier.weight(weight = 1f, fill = false), + onClick = onCancel, + shape = RoundedCornerShape(0.dp) + ) { + Text(text = stringResource(R.string.LocalBackupRestoreScreen__no_passphrase)) + } - Spacer(modifier = Modifier.size(24.dp)) + Spacer(modifier = Modifier.size(24.dp)) - Buttons.LargeTonal( - enabled = isValid, - onClick = { onSubmit(passphrase) } - ) { - Text(text = stringResource(R.string.LocalBackupRestoreScreen__next)) + Buttons.LargeTonal( + enabled = isValid, + onClick = { onSubmit(passphrase) } + ) { + Text(text = stringResource(R.string.LocalBackupRestoreScreen__next)) + } } } } diff --git a/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreScaffold.kt b/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreScaffold.kt index d3608892c3..80d7729c10 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreScaffold.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreScaffold.kt @@ -64,7 +64,7 @@ internal fun LocalBackupRestoreLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { if (primaryButton != null || secondaryButton != null) { Column( @@ -119,7 +119,7 @@ internal fun LocalBackupRestoreLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { if (primaryButton != null || secondaryButton != null) { Row( diff --git a/feature/registration/src/main/java/org/signal/registration/screens/messagesync/MessageSyncScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/messagesync/MessageSyncScreen.kt index b3d7f91e4a..a08adc61cc 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/messagesync/MessageSyncScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/messagesync/MessageSyncScreen.kt @@ -75,18 +75,25 @@ private fun OnePane(params: RegistrationScaffold.Params.OnePane, state: MessageS OnePaneRegistrationScaffold( params = params, - footer = { FooterContent(params = params, onEvent = onEvent) } - ) { paddingValues -> - Column( - horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier - .verticalScroll(scrollState) - .padding(paddingValues) - ) { - FirstPaneContent(state) - SecondPaneContent() + content = { paddingValues -> + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .verticalScroll(scrollState) + .padding(paddingValues) + ) { + FirstPaneContent(state) + SecondPaneContent() + } + }, + footer = { + FooterContent( + params = params, + isElevated = scrollState.canScrollForward, + onEvent = onEvent + ) } - } + ) } @Composable @@ -114,7 +121,13 @@ private fun TwoPane(params: RegistrationScaffold.Params.TwoPane, state: MessageS .padding(paddingValues) ) }, - footer = { FooterContent(params = params, onEvent = onEvent) } + footer = { + FooterContent( + params = params, + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, + onEvent = onEvent + ) + } ) } @@ -180,15 +193,20 @@ private fun SecondPaneContent( @Composable private fun FooterContent( params: RegistrationScaffold.Params, + isElevated: Boolean, onEvent: (MessageSyncScreenEvent) -> Unit, modifier: Modifier = Modifier ) { val breakpoint = rememberWindowBreakpoint() - when (breakpoint) { - is WindowBreakpoint.Small -> StackedFooter(params, modifier, onEvent) - is WindowBreakpoint.Medium -> StackedFooter(params, modifier, onEvent) - is WindowBreakpoint.Large -> InlineFooter(modifier, onEvent) + RegistrationScaffold.FooterSurface( + isElevated = isElevated + ) { + when (breakpoint) { + is WindowBreakpoint.Small -> StackedFooter(params, modifier, onEvent) + is WindowBreakpoint.Medium -> StackedFooter(params, modifier, onEvent) + is WindowBreakpoint.Large -> InlineFooter(modifier, onEvent) + } } } diff --git a/feature/registration/src/main/java/org/signal/registration/screens/permissions/PermissionsScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/permissions/PermissionsScreen.kt index bf6944fb82..cdcfcb798b 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/permissions/PermissionsScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/permissions/PermissionsScreen.kt @@ -133,7 +133,7 @@ private fun OnePaneLayout( PermissionButtons( onProceed = onProceed, permissionsState = permissionsState, - showElevation = scrollState.canScrollForward, + isElevated = scrollState.canScrollForward, modifier = Modifier.padding(params.footerPadding) ) } @@ -193,7 +193,7 @@ private fun TwoPaneLayout( PermissionButtons( onProceed = onProceed, permissionsState = permissionsState, - showElevation = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, modifier = Modifier.padding(params.footerPadding) ) } @@ -277,12 +277,11 @@ private fun PermissionRow( private fun PermissionButtons( onProceed: () -> Unit, permissionsState: MultiplePermissionsState, - showElevation: Boolean, + isElevated: Boolean, modifier: Modifier = Modifier ) { - Surface( - modifier = Modifier.fillMaxWidth(), - shadowElevation = if (showElevation) 8.dp else 0.dp + RegistrationScaffold.FooterSurface( + isElevated = isElevated ) { Row( horizontalArrangement = Arrangement.End, diff --git a/feature/registration/src/main/java/org/signal/registration/screens/phonenumber/PhoneNumberEntryScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/phonenumber/PhoneNumberEntryScreen.kt index 2339e94d62..f74123ba36 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/phonenumber/PhoneNumberEntryScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/phonenumber/PhoneNumberEntryScreen.kt @@ -177,7 +177,7 @@ private fun OnePaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { NextButton(state, onEvent) } @@ -245,7 +245,7 @@ private fun TwoPaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { NextButton(state, onEvent) } diff --git a/feature/registration/src/main/java/org/signal/registration/screens/pincreation/PinCreationScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/pincreation/PinCreationScreen.kt index 37561ba82f..082c0d3ce3 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/pincreation/PinCreationScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/pincreation/PinCreationScreen.kt @@ -22,7 +22,6 @@ import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TextField @@ -152,7 +151,7 @@ private fun OnePaneLayout( NextButton( params = params, canSubmitPin = canSubmitPin, - showElevation = scrollState.canScrollForward, + isElevated = scrollState.canScrollForward, onNext = { onEvent(PinCreationScreenEvents.PinSubmitted(pin)) } ) } @@ -221,7 +220,7 @@ private fun TwoPaneLayout( NextButton( params = params, canSubmitPin = canSubmitPin, - showElevation = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, onNext = { onEvent(PinCreationScreenEvents.PinSubmitted(pin)) } ) } @@ -362,13 +361,13 @@ private fun KeyboardToggleButton( private fun NextButton( params: RegistrationScaffold.Params, canSubmitPin: Boolean, - showElevation: Boolean, + isElevated: Boolean, onNext: () -> Unit, modifier: Modifier = Modifier ) { - Surface( - modifier = modifier.fillMaxWidth(), - shadowElevation = if (showElevation) 8.dp else 0.dp + RegistrationScaffold.FooterSurface( + isElevated = isElevated, + modifier = modifier ) { Row( horizontalArrangement = Arrangement.End, diff --git a/feature/registration/src/main/java/org/signal/registration/screens/pinentry/PinEntryScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/pinentry/PinEntryScreen.kt index 5a41fb17d5..606bbc574f 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/pinentry/PinEntryScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/pinentry/PinEntryScreen.kt @@ -23,7 +23,6 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton -import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TextField @@ -157,7 +156,7 @@ private fun OnePaneLayout( ContinueButton( params = params, canSubmitPin = canSubmitPin, - showElevation = scrollState.canScrollForward, + isElevated = scrollState.canScrollForward, onContinue = { onEvent(PinEntryScreenEvents.PinEntered(pin)) } ) } @@ -234,7 +233,7 @@ private fun TwoPaneLayout( ContinueButton( params = params, canSubmitPin = canSubmitPin, - showElevation = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, onContinue = { onEvent(PinEntryScreenEvents.PinEntered(pin)) } ) } @@ -361,13 +360,13 @@ private fun KeyboardToggleButton( private fun ContinueButton( params: RegistrationScaffold.Params, canSubmitPin: Boolean, - showElevation: Boolean, + isElevated: Boolean, onContinue: () -> Unit, modifier: Modifier = Modifier ) { - Surface( - modifier = modifier.fillMaxWidth(), - shadowElevation = if (showElevation) 8.dp else 0.dp + RegistrationScaffold.FooterSurface( + isElevated = isElevated, + modifier = modifier ) { Row( horizontalArrangement = Arrangement.End, diff --git a/feature/registration/src/main/java/org/signal/registration/screens/quickrestore/QuickRestoreQrScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/quickrestore/QuickRestoreQrScreen.kt index d6a48d2876..432017bb26 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/quickrestore/QuickRestoreQrScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/quickrestore/QuickRestoreQrScreen.kt @@ -97,7 +97,7 @@ private fun OnePaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { CancelFooter(onEvent) } @@ -145,7 +145,7 @@ private fun TwoPaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { CancelFooter(onEvent) } diff --git a/feature/registration/src/main/java/org/signal/registration/screens/remotebackuprestore/RemoteBackupRestoreScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/remotebackuprestore/RemoteBackupRestoreScreen.kt index 5f21ed6c81..b6f8a6c7b0 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/remotebackuprestore/RemoteBackupRestoreScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/remotebackuprestore/RemoteBackupRestoreScreen.kt @@ -123,7 +123,7 @@ private fun OnePaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { Column( modifier = Modifier @@ -179,7 +179,7 @@ private fun TwoPaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { Row( modifier = Modifier diff --git a/feature/registration/src/main/java/org/signal/registration/screens/restoreselection/ArchiveRestoreSelectionScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/restoreselection/ArchiveRestoreSelectionScreen.kt index cd1f8e3a3e..a284fca136 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/restoreselection/ArchiveRestoreSelectionScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/restoreselection/ArchiveRestoreSelectionScreen.kt @@ -98,7 +98,7 @@ private fun OnePaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { if (state.showSkipButton) { Row( @@ -152,7 +152,7 @@ private fun TwoPaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { if (state.showSkipButton) { Row( diff --git a/feature/registration/src/main/java/org/signal/registration/screens/verificationcode/VerificationCodeScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/verificationcode/VerificationCodeScreen.kt index 158ec12441..258a5f0dd3 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/verificationcode/VerificationCodeScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/verificationcode/VerificationCodeScreen.kt @@ -206,7 +206,7 @@ private fun OnePaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = scrollState.canScrollForward + isElevated = scrollState.canScrollForward ) { Row( modifier = Modifier @@ -272,7 +272,7 @@ private fun TwoPaneLayout( }, footer = { RegistrationScaffold.FooterSurface( - isContentScrolledUnder = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward + isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward ) { Row( modifier = Modifier