diff --git a/demo/registration/src/main/java/org/signal/registration/sample/MainActivity.kt b/demo/registration/src/main/java/org/signal/registration/sample/MainActivity.kt index 2fb6a67ac0..013b97342d 100644 --- a/demo/registration/src/main/java/org/signal/registration/sample/MainActivity.kt +++ b/demo/registration/src/main/java/org/signal/registration/sample/MainActivity.kt @@ -24,10 +24,7 @@ import androidx.compose.animation.slideOutHorizontally import androidx.compose.animation.slideOutVertically import androidx.compose.animation.togetherWith import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.safeDrawing -import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable 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 100ff46c83..d78523ef61 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 @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding -import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawing @@ -170,7 +169,7 @@ object RegistrationScaffold { shadowElevation = if (isElevated) 8.dp else 0.dp ) { Box( - modifier = Modifier.windowInsetsPadding(WindowInsets.navigationBars) + modifier = Modifier.windowInsetsPadding(WindowInsets.safeDrawing.only(WindowInsetsSides.Horizontal + WindowInsetsSides.Bottom)) ) { 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 266aee5df8..2cca345ce6 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 @@ -78,8 +78,10 @@ private fun OnePaneLayout( horizontalAlignment = Alignment.CenterHorizontally ) { Title() - Spacer(modifier = Modifier.height(12.dp)) - Description(state) + Description( + state = state, + modifier = Modifier.padding(top = 16.dp) + ) } }, footer = { @@ -177,12 +179,15 @@ private fun Title() { } @Composable -private fun Description(state: AccountLockedState) { +private fun Description( + state: AccountLockedState, + modifier: Modifier = Modifier +) { Text( text = stringResource(R.string.AccountLockedScreen__your_account, state.daysRemaining), style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.fillMaxWidth() + 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 3f33264a0e..adc64eed3c 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 @@ -187,13 +187,13 @@ private fun Description() { .attachDebugLogHelper() ) - Spacer(modifier = Modifier.size(8.dp)) - Text( text = stringResource(R.string.EnterAepScreen__your_recovery_key_is_a_64_character_code), - style = MaterialTheme.typography.bodyMedium, + style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.fillMaxWidth() + modifier = Modifier + .fillMaxWidth() + .padding(top = 16.dp) ) } 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 88b375306c..d49ef309e7 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 @@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.Column 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.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -36,6 +37,7 @@ import org.signal.registration.R import org.signal.registration.screens.OnePaneRegistrationScaffold import org.signal.registration.screens.RegistrationScaffold import org.signal.registration.screens.TwoPaneRegistrationScaffold +import org.signal.registration.screens.attachDebugLogHelper import org.signal.registration.screens.util.MockPermissionsState import org.signal.registration.test.TestTags @@ -76,6 +78,7 @@ private fun OnePane(params: RegistrationScaffold.Params.OnePane, permissionState }, footer = { FooterContent( + params = params, permissionState = permissionState, isElevated = scrollState.canScrollForward, onProceed = onProceed @@ -88,7 +91,6 @@ private fun OnePane(params: RegistrationScaffold.Params.OnePane, permissionState @Composable private fun TwoPane(params: RegistrationScaffold.Params.TwoPane, permissionState: PermissionState, onProceed: () -> Unit) { val firstPaneScrollState = rememberScrollState() - val secondPaneScrollState = rememberScrollState() TwoPaneRegistrationScaffold( params = params, @@ -105,15 +107,14 @@ private fun TwoPane(params: RegistrationScaffold.Params.TwoPane, permissionState SecondPaneContent( modifier = Modifier .weight(1f) - .fillMaxHeight() - .verticalScroll(secondPaneScrollState) .padding(paddingValues) ) }, footer = { FooterContent( + params = params, permissionState = permissionState, - isElevated = firstPaneScrollState.canScrollForward || secondPaneScrollState.canScrollForward, + isElevated = firstPaneScrollState.canScrollForward, onProceed = onProceed ) } @@ -127,13 +128,17 @@ private fun FirstPaneContent( Column(modifier = modifier) { Text( text = stringResource(R.string.AllowNotificationsScreen__allow_notifications), - style = MaterialTheme.typography.headlineLarge, - modifier = Modifier.padding(bottom = 12.dp) + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier + .fillMaxWidth() + .attachDebugLogHelper() ) Text( text = stringResource(R.string.AllowNotificationsScreen__signal_would_like_to_request_the_notification_permission), - style = MaterialTheme.typography.titleMedium + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.padding(top = 16.dp) ) } } @@ -153,6 +158,7 @@ private fun SecondPaneContent( @OptIn(ExperimentalPermissionsApi::class) @Composable private fun FooterContent( + params: RegistrationScaffold.Params, permissionState: PermissionState, isElevated: Boolean, onProceed: () -> Unit @@ -162,7 +168,7 @@ private fun FooterContent( ) { Row( horizontalArrangement = spacedBy(56.dp), - modifier = Modifier.padding(56.dp) + modifier = Modifier.padding(params.footerPadding) ) { Spacer(modifier = Modifier.weight(1f)) diff --git a/feature/registration/src/main/java/org/signal/registration/screens/countrycode/CountryCodePickerScreen.kt b/feature/registration/src/main/java/org/signal/registration/screens/countrycode/CountryCodePickerScreen.kt index dd16d4e7c2..cbf3efda6d 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/countrycode/CountryCodePickerScreen.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/countrycode/CountryCodePickerScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxHeight @@ -42,6 +43,7 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.SpanStyle @@ -97,10 +99,23 @@ private fun OnePaneLayout( scrollBehavior = topBarScrollBehavior, onCloseClick = { onEvent(CountryCodePickerScreenEvents.Dismissed) } ) + }, + content = { paddingValues -> + Column( + modifier = Modifier + .fillMaxSize() + .nestedScroll(topBarScrollBehavior.nestedScrollConnection) + ) { + CountryList( + showTitle = true, + state = state, + onEvent = onEvent, + contentPadding = paddingValues, + modifier = Modifier.weight(1f) + ) + } } - ) { - CountryList(state, onEvent) - } + ) } @OptIn(ExperimentalMaterial3Api::class) @@ -142,7 +157,11 @@ private fun TwoPaneLayout( .fillMaxHeight() .padding(paddingValues) ) { - CountryList(state, onEvent) + CountryList( + showTitle = false, + state = state, + onEvent = onEvent + ) } } ) @@ -165,14 +184,35 @@ fun TopAppBar( } @Composable -private fun CountryList(state: CountryCodeState, onEvent: (CountryCodePickerScreenEvents) -> Unit) { +private fun CountryList( + state: CountryCodeState, + onEvent: (CountryCodePickerScreenEvents) -> Unit, + modifier: Modifier = Modifier, + contentPadding: PaddingValues = PaddingValues(), + showTitle: Boolean +) { val listState = rememberLazyListState() val coroutineScope = rememberCoroutineScope() LazyColumn( + modifier = modifier, state = listState, + contentPadding = contentPadding, horizontalAlignment = Alignment.CenterHorizontally ) { + item { + if (showTitle) { + Text( + text = stringResource(R.string.CountryCodeSelectScreen__your_country), + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 28.dp) + .attachDebugLogHelper() + ) + } + } + stickyHeader { SearchBar( text = state.query, @@ -351,8 +391,6 @@ private fun SearchBar( shape = RoundedCornerShape(32.dp), modifier = modifier .background(MaterialTheme.colorScheme.background) - .padding(bottom = 18.dp) - .padding(horizontal = 16.dp) .fillMaxWidth() .defaultMinSize(minHeight = 54.dp) .focusRequester(focusRequester), 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 112cc43cbb..6b50e88abe 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 @@ -69,6 +69,7 @@ import org.signal.registration.R import org.signal.registration.screens.OnePaneRegistrationScaffold import org.signal.registration.screens.RegistrationScaffold import org.signal.registration.screens.TwoPaneRegistrationScaffold +import org.signal.registration.screens.attachDebugLogHelper import org.signal.registration.screens.quickrestore.QrState import org.signal.registration.test.TestTags @@ -122,8 +123,8 @@ private fun OnePane( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = spacedBy(64.dp), modifier = Modifier - .padding(paddingValues) .verticalScroll(scrollState) + .padding(paddingValues) ) { Title() @@ -134,6 +135,7 @@ private fun OnePane( }, footer = { OnePaneFooterContent( + params = params, isElevated = scrollState.canScrollForward, onEvent = onEvent ) @@ -168,6 +170,7 @@ private fun TwoPane( }, footer = { TwoPaneFooterContent( + params = params, isElevated = false, onEvent = onEvent ) @@ -194,7 +197,10 @@ private fun FirstPaneContent( private fun Title() { Text( text = stringResource(R.string.LinkAccountScreen__scan_this_code_to_link_your_account), - style = MaterialTheme.typography.headlineLarge + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier + .fillMaxWidth() + .attachDebugLogHelper() ) } @@ -465,6 +471,7 @@ fun getQrCodeSize(isInOverlay: Boolean): Dp { @Composable private fun OnePaneFooterContent( + params: RegistrationScaffold.Params.OnePane, isElevated: Boolean, onEvent: (LinkAccountScreenEvent) -> Unit, modifier: Modifier = Modifier @@ -475,8 +482,8 @@ private fun OnePaneFooterContent( Column( horizontalAlignment = Alignment.CenterHorizontally, modifier = modifier - .padding(start = 36.dp, end = 36.dp, bottom = 16.dp) .fillMaxWidth() + .padding(params.footerPadding) ) { Row { DontHaveSignal() @@ -488,6 +495,7 @@ private fun OnePaneFooterContent( @Composable private fun TwoPaneFooterContent( + params: RegistrationScaffold.Params.TwoPane, isElevated: Boolean, onEvent: (LinkAccountScreenEvent) -> Unit, modifier: Modifier = Modifier @@ -497,7 +505,7 @@ private fun TwoPaneFooterContent( ) { Row( horizontalArrangement = spacedBy(8.dp), - modifier = modifier.padding(36.dp) + modifier = modifier.padding(params.footerPadding) ) { 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 62b094deda..a0b8efeab3 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 @@ -53,6 +53,7 @@ import org.signal.registration.R import org.signal.registration.screens.OnePaneRegistrationScaffold import org.signal.registration.screens.RegistrationScaffold import org.signal.registration.screens.TwoPaneRegistrationScaffold +import org.signal.registration.screens.attachDebugLogHelper private const val PASSPHRASE_LENGTH = 30 private const val CHUNK_SIZE = 5 @@ -200,16 +201,16 @@ private fun Description() { Text( text = stringResource(R.string.LocalBackupRestoreScreen__enter_backup_passphrase), style = MaterialTheme.typography.headlineMedium, - modifier = Modifier.fillMaxWidth() + modifier = Modifier + .fillMaxWidth() + .attachDebugLogHelper() ) - Spacer(modifier = Modifier.size(8.dp)) - Text( text = stringResource(R.string.LocalBackupRestoreScreen__enter_the_30_digit_passphrase), - style = MaterialTheme.typography.bodyMedium, + style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.padding(top = 16.dp) ) } 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 80d7729c10..eecfe196d0 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 @@ -70,7 +70,7 @@ internal fun LocalBackupRestoreLayout( Column( modifier = Modifier .fillMaxWidth() - .padding(horizontal = 24.dp, vertical = 16.dp), + .padding(params.footerPadding), horizontalAlignment = Alignment.CenterHorizontally ) { primaryButton?.invoke(Modifier.fillMaxWidth()) @@ -125,7 +125,7 @@ internal fun LocalBackupRestoreLayout( Row( modifier = Modifier .fillMaxWidth() - .padding(horizontal = 24.dp, vertical = 16.dp), + .padding(params.footerPadding), horizontalArrangement = Arrangement.End, verticalAlignment = Alignment.CenterVertically ) { @@ -153,13 +153,11 @@ internal fun Description(headline: String, body: String) { .attachDebugLogHelper() ) - Spacer(modifier = Modifier.height(8.dp)) - Text( text = body, - style = MaterialTheme.typography.bodyMedium, + style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.padding(top = 16.dp) ) } 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 a08adc61cc..1b93d17cc3 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 @@ -48,6 +48,7 @@ import org.signal.registration.R import org.signal.registration.screens.OnePaneRegistrationScaffold import org.signal.registration.screens.RegistrationScaffold import org.signal.registration.screens.TwoPaneRegistrationScaffold +import org.signal.registration.screens.attachDebugLogHelper import org.signal.registration.test.TestTags /** @@ -139,15 +140,17 @@ private fun FirstPaneContent( Column(modifier = modifier) { Text( text = stringResource(R.string.MessageSyncScreen__syncing_messages), - style = MaterialTheme.typography.headlineLarge, - modifier = Modifier.padding(bottom = 12.dp) + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier + .fillMaxWidth() + .attachDebugLogHelper() ) Text( text = stringResource(R.string.MessageSyncScreen__this_may_take_a_few_minutes), - style = MaterialTheme.typography.titleMedium, + style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.padding(bottom = 47.dp) + modifier = Modifier.padding(top = 16.dp) ) LinearProgressIndicator( @@ -161,7 +164,7 @@ private fun FirstPaneContent( drawStopIndicator = {}, gapSize = 0.dp, modifier = Modifier - .padding(bottom = 16.dp) + .padding(top = 48.dp, bottom = 16.dp) .widthIn(max = 415.dp) .fillMaxWidth() ) @@ -203,27 +206,31 @@ private fun FooterContent( isElevated = isElevated ) { when (breakpoint) { - is WindowBreakpoint.Small -> StackedFooter(params, modifier, onEvent) - is WindowBreakpoint.Medium -> StackedFooter(params, modifier, onEvent) - is WindowBreakpoint.Large -> InlineFooter(modifier, onEvent) + is WindowBreakpoint.Small, is WindowBreakpoint.Medium -> StackedFooter(params, modifier, onEvent) + is WindowBreakpoint.Large -> InlineFooter(params, modifier, onEvent) } } } @Composable -private fun StackedFooter(params: RegistrationScaffold.Params, modifier: Modifier, onEvent: (MessageSyncScreenEvent) -> Unit) { - Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) { +private fun StackedFooter( + params: RegistrationScaffold.Params, + modifier: Modifier, + onEvent: (MessageSyncScreenEvent) -> Unit +) { + Column( + modifier = modifier + .padding(params.footerPadding) + .fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally + ) { Notice( onEvent = onEvent, - modifier = Modifier - .padding(horizontal = 58.dp) - .padding(bottom = 16.dp) + modifier = Modifier.padding(bottom = 16.dp) ) Cancel( onEvent = onEvent, modifier = Modifier - .padding(horizontal = 56.dp) - .padding(bottom = 36.dp) .widthIn(max = params.maxButtonWidth) .fillMaxWidth() ) @@ -231,31 +238,47 @@ private fun StackedFooter(params: RegistrationScaffold.Params, modifier: Modifie } @Composable -private fun InlineFooter(modifier: Modifier, onEvent: (MessageSyncScreenEvent) -> Unit) { - Box(modifier = modifier) { - Notice( - onEvent = onEvent, - modifier = Modifier - .padding(horizontal = 58.dp, vertical = 36.dp) - ) - Cancel( - onEvent = onEvent, - modifier = Modifier - .padding(horizontal = 56.dp, vertical = 36.dp) - .align(Alignment.CenterEnd) - ) +private fun InlineFooter( + params: RegistrationScaffold.Params, + modifier: Modifier, + onEvent: (MessageSyncScreenEvent) -> Unit +) { + Row( + modifier = modifier + .padding(params.footerPadding) + .fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Spacer(modifier = Modifier.weight(1f)) + Notice(onEvent = onEvent) + + Box( + modifier = Modifier.weight(1f), + contentAlignment = Alignment.CenterEnd + ) { + Cancel( + onEvent = onEvent, + modifier = Modifier + .widthIn(max = params.maxButtonWidth) + .padding(start = 16.dp) + ) + } } } @Composable -private fun Notice(modifier: Modifier, onEvent: (MessageSyncScreenEvent) -> Unit) { +private fun Notice( + modifier: Modifier = Modifier, + onEvent: (MessageSyncScreenEvent) -> Unit +) { Row(modifier = modifier) { - Spacer(modifier = Modifier.weight(1f)) - Icon( imageVector = SignalIcons.Lock.imageVector, contentDescription = null, - tint = MaterialTheme.colorScheme.onSurfaceVariant + tint = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier + .padding(end = 2.dp) + .align(Alignment.CenterVertically) ) Text( @@ -287,9 +310,8 @@ private fun Notice(modifier: Modifier, onEvent: (MessageSyncScreenEvent) -> Unit modifier = Modifier .testTag(TestTags.MESSAGE_SYNC_LEARN_MORE_LINK) .widthIn(max = 405.dp) + .align(Alignment.CenterVertically) ) - - Spacer(modifier = Modifier.weight(1f)) } } 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 f74123ba36..7290a9bbf1 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 @@ -311,13 +311,11 @@ private fun Description() { .attachDebugLogHelper() ) - Spacer(modifier = Modifier.height(16.dp)) - Text( text = stringResource(R.string.RegistrationActivity_you_will_receive_a_verification_code), style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.padding(top = 16.dp) ) } 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 082c0d3ce3..b6fb8f1381 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 @@ -57,7 +57,6 @@ import org.signal.registration.screens.attachDebugLogHelper * PIN creation screen for the registration flow. * Allows users to create a new PIN for their account. */ -@Suppress("AssignedValueIsNeverRead") @Composable fun PinCreationScreen( state: PinCreationState, @@ -240,22 +239,17 @@ private fun PinDescription( else -> stringResource(R.string.PinCreationScreen__create_your_pin) }, style = MaterialTheme.typography.headlineMedium, - textAlign = TextAlign.Start, modifier = Modifier .fillMaxWidth() .attachDebugLogHelper() ) - Spacer(modifier = Modifier.height(16.dp)) - if (isConfirmEnabled) { Text( text = stringResource(R.string.PinCreationScreen__reenter_pin_description), - style = MaterialTheme.typography.bodyLarge.copy( - color = MaterialTheme.colorScheme.onSurfaceVariant, - textAlign = TextAlign.Start - ), - modifier = Modifier.fillMaxWidth() + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.padding(top = 16.dp) ) } else { val descriptionText = buildAnnotatedString { @@ -275,11 +269,10 @@ private fun PinDescription( ClickableText( text = descriptionText, - style = MaterialTheme.typography.bodyLarge.copy( - color = MaterialTheme.colorScheme.onSurfaceVariant, - textAlign = TextAlign.Start - ), - modifier = Modifier.fillMaxWidth(), + style = MaterialTheme.typography.bodyLarge.copy(color = MaterialTheme.colorScheme.onSurfaceVariant), + modifier = Modifier + .fillMaxWidth() + .padding(top = 16.dp), onClick = { offset -> descriptionText.getStringAnnotations(tag = "LEARN_MORE", start = offset, end = offset) .firstOrNull() 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 606bbc574f..a459fb5778 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 @@ -256,18 +256,17 @@ private fun PinDescription( text = titleString, style = MaterialTheme.typography.headlineMedium, textAlign = TextAlign.Center, - modifier = Modifier.attachDebugLogHelper() + modifier = Modifier + .fillMaxWidth() + .attachDebugLogHelper() ) - Spacer(modifier = Modifier.height(12.dp)) - Text( text = stringResource(R.string.PinEntryScreen__enter_the_pin_you_created), - style = MaterialTheme.typography.bodyLarge.copy( - color = MaterialTheme.colorScheme.onSurfaceVariant, - textAlign = TextAlign.Start - ), - color = MaterialTheme.colorScheme.onSurfaceVariant + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Start, + modifier = Modifier.padding(top = 16.dp) ) } } 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 b6f8a6c7b0..186c65833c 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 @@ -201,7 +201,10 @@ private fun BackupInfoContent( state: RemoteBackupRestoreState ) { BackupInfoHeading() - BackupInfoDetails(state = state) + BackupInfoDetails( + state = state, + modifier = Modifier.padding(top = 16.dp) + ) } @Composable @@ -229,36 +232,37 @@ private fun BackupInfoHeading() { } @Composable -private fun BackupInfoDetails(state: RemoteBackupRestoreState) { - if (state.backupTime > 0) { - Spacer(modifier = Modifier.height(12.dp)) +private fun BackupInfoDetails(state: RemoteBackupRestoreState, modifier: Modifier = Modifier) { + Column( + verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = modifier + ) { + if (state.backupTime > 0) { + val context = LocalContext.current + val (dateStr, timeStr) = remember(context, state.backupTime) { + val date = Date(state.backupTime) + val dateFormatted = DateFormat.getMediumDateFormat(context).format(date) + val timeFormatted = DateFormat.getTimeFormat(context).format(date) + dateFormatted to timeFormatted + } - val context = LocalContext.current - val (dateStr, timeStr) = remember(context, state.backupTime) { - val date = Date(state.backupTime) - val dateFormatted = DateFormat.getMediumDateFormat(context).format(date) - val timeFormatted = DateFormat.getTimeFormat(context).format(date) - dateFormatted to timeFormatted + Text( + text = stringResource(R.string.RemoteRestoreScreen__your_last_backup_was_made_on_s_at_s, dateStr, timeStr), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurfaceVariant, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxWidth() + ) } Text( - text = stringResource(R.string.RemoteRestoreScreen__your_last_backup_was_made_on_s_at_s, dateStr, timeStr), + text = stringResource(R.string.RemoteRestoreScreen__your_media_will_restore_in_the_background), style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth() ) } - - Spacer(modifier = Modifier.height(16.dp)) - - Text( - text = stringResource(R.string.RemoteRestoreScreen__your_media_will_restore_in_the_background), - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurfaceVariant, - textAlign = TextAlign.Center, - modifier = Modifier.fillMaxWidth() - ) } @Composable 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 a284fca136..28f1ae3c05 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 @@ -179,13 +179,11 @@ private fun Description() { .attachDebugLogHelper() ) - Spacer(modifier = Modifier.height(8.dp)) - Text( text = stringResource(R.string.ArchiveRestoreSelectionScreen__subheading), - style = MaterialTheme.typography.bodyMedium, + style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.padding(top = 16.dp) ) } 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 7c9d3fda1b..c915ad0176 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 @@ -185,8 +185,7 @@ private fun OnePaneLayout( modifier = Modifier .fillMaxSize() .verticalScroll(scrollState) - .padding(paddingValues), - horizontalAlignment = Alignment.CenterHorizontally + .padding(paddingValues) ) { Description(state, onEvent) @@ -453,13 +452,11 @@ private fun Description(state: VerificationCodeState, onEvent: (VerificationCode .attachDebugLogHelper() ) - Spacer(modifier = Modifier.height(16.dp)) - Text( text = stringResource(R.string.VerificationCodeScreen__enter_the_code_we_sent_to_s, state.e164), - style = MaterialTheme.typography.bodyMedium, + style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.padding(top = 16.dp) ) Spacer(modifier = Modifier.height(8.dp))