From 52fa86046bfad53be1388fc31c621720491b284e Mon Sep 17 00:00:00 2001 From: jeffrey-signal Date: Mon, 22 Sep 2025 11:28:54 -0400 Subject: [PATCH] Fix backups UI scaling issues. --- .../MessageBackupsKeyEducationScreen.kt | 17 ++++++++-- .../app/backups/BackupsSettingsFragment.kt | 33 +++++++++---------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsKeyEducationScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsKeyEducationScreen.kt index 6ddd6823df..5ef3a30cbb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsKeyEducationScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsKeyEducationScreen.kt @@ -8,10 +8,13 @@ package org.thoughtcrime.securesms.backup.v2.ui.subscription import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -39,6 +42,8 @@ fun MessageBackupsKeyEducationScreen( onNavigationClick: () -> Unit = {}, onNextClick: () -> Unit = {} ) { + val scrollState = rememberScrollState() + Scaffolds.Settings( title = "", navigationIcon = ImageVector.vectorResource(R.drawable.symbol_arrow_start_24), @@ -48,7 +53,8 @@ fun MessageBackupsKeyEducationScreen( modifier = Modifier .padding(it) .padding(horizontal = dimensionResource(CoreUiR.dimen.gutter)) - .fillMaxSize(), + .fillMaxSize() + .verticalScroll(scrollState), horizontalAlignment = Alignment.CenterHorizontally ) { Image( @@ -81,11 +87,16 @@ fun MessageBackupsKeyEducationScreen( modifier = Modifier.padding(top = 16.dp) ) - Box( + Spacer( modifier = Modifier .fillMaxWidth() .weight(1f) - .padding(bottom = 24.dp) + ) + + Box( + modifier = Modifier + .fillMaxWidth() + .padding(top = 16.dp, bottom = 24.dp) ) { Buttons.LargeTonal( onClick = onNextClick, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt index 3ec0085fad..a36970db85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/BackupsSettingsFragment.kt @@ -11,12 +11,10 @@ import android.view.View import androidx.activity.result.ActivityResultLauncher import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon @@ -253,12 +251,12 @@ private fun NeverEnabledBackupsRow( onBackupsRowClick: () -> Unit = {} ) { Rows.TextRow( - modifier = Modifier.height(IntrinsicSize.Min), + modifier = Modifier.wrapContentHeight(), icon = { Box( modifier = Modifier - .fillMaxHeight() .padding(top = 12.dp) + .align(Alignment.Top) ) { Icon( painter = painterResource(R.drawable.symbol_backup_24), @@ -331,7 +329,10 @@ private fun InactiveBackupsRow( Icon( imageVector = ImageVector.vectorResource(R.drawable.symbol_backup_24), contentDescription = stringResource(R.string.preferences_chats__backups), - tint = MaterialTheme.colorScheme.onSurface + tint = MaterialTheme.colorScheme.onSurface, + modifier = Modifier + .padding(top = 12.dp) + .align(Alignment.Top) ) } ) @@ -342,13 +343,12 @@ private fun NotFoundBackupRow( onBackupsRowClick: () -> Unit = {} ) { Rows.TextRow( - modifier = Modifier.height(IntrinsicSize.Min), + modifier = Modifier.wrapContentHeight(), icon = { Box( - contentAlignment = Alignment.TopCenter, modifier = Modifier - .fillMaxHeight() .padding(top = 12.dp) + .align(Alignment.Top) ) { Icon( painter = painterResource(R.drawable.symbol_backup_24), @@ -379,13 +379,12 @@ private fun PendingBackupRow( onBackupsRowClick: () -> Unit = {} ) { Rows.TextRow( - modifier = Modifier.height(IntrinsicSize.Min), + modifier = Modifier.wrapContentHeight(), icon = { Box( - contentAlignment = Alignment.TopCenter, modifier = Modifier - .fillMaxHeight() .padding(top = 12.dp) + .align(Alignment.Top) ) { CircularProgressIndicator( modifier = Modifier.size(24.dp) @@ -430,13 +429,12 @@ private fun LocalStoreBackupRow( onBackupsRowClick: () -> Unit ) { Rows.TextRow( - modifier = Modifier.height(IntrinsicSize.Min), + modifier = Modifier.wrapContentHeight(), icon = { Box( - contentAlignment = Alignment.TopCenter, modifier = Modifier - .fillMaxHeight() .padding(top = 12.dp) + .align(Alignment.Top) ) { Icon( painter = painterResource(R.drawable.symbol_backup_24), @@ -476,13 +474,12 @@ private fun ActiveBackupsRow( onBackupsRowClick: () -> Unit = {} ) { Rows.TextRow( - modifier = Modifier.height(IntrinsicSize.Min), + modifier = Modifier.wrapContentHeight(), icon = { Box( - contentAlignment = Alignment.TopCenter, modifier = Modifier - .fillMaxHeight() .padding(top = 12.dp) + .align(Alignment.Top) ) { Icon( painter = painterResource(R.drawable.symbol_backup_24),