From 83144afd666041346dc9d2ecf1052693bb23e691 Mon Sep 17 00:00:00 2001 From: Faded Date: Sat, 19 Jul 2025 18:56:39 +0500 Subject: [PATCH 1/3] fix(onboarding): improve battery optimization screen layout and scrolling Restructure BatteryOptimizationEnabledContent to use proper scrolling behavior and fixed button placement at the bottom. The changes ensure better usability by preventing content from being hidden behind buttons and allowing full content visibility through scrolling. --- .../onboarding/BatteryOptimizationScreen.kt | 219 ++++++++++-------- 1 file changed, 118 insertions(+), 101 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt index 1d44cff0..ff945b7d 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt @@ -2,6 +2,8 @@ package com.bitchat.android.onboarding import androidx.compose.animation.core.* import androidx.compose.foundation.layout.* +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.outlined.* @@ -75,119 +77,134 @@ private fun BatteryOptimizationEnabledContent( colorScheme: ColorScheme, isLoading: Boolean ) { + // -------------- Fix Start for this method(BatteryOptimizationEnabledContent)----------- Column( - verticalArrangement = Arrangement.spacedBy(24.dp), - horizontalAlignment = Alignment.CenterHorizontally + modifier = Modifier.fillMaxSize() ) { - Text( - text = "bitchat*", - style = MaterialTheme.typography.headlineLarge.copy( - fontFamily = FontFamily.Monospace, - fontWeight = FontWeight.Bold, - color = colorScheme.primary + // Scrollable content area + Column( + modifier = Modifier + .weight(1f) + .verticalScroll(rememberScrollState()) + .padding(bottom = 16.dp), + verticalArrangement = Arrangement.spacedBy(24.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = "bitchat*", + style = MaterialTheme.typography.headlineLarge.copy( + fontFamily = FontFamily.Monospace, + fontWeight = FontWeight.Bold, + color = colorScheme.primary + ) ) - ) - - Spacer(modifier = Modifier.height(16.dp)) - - Icon( - imageVector = Icons.Outlined.BatteryAlert, - contentDescription = "Battery Optimization", - modifier = Modifier.size(64.dp), - tint = colorScheme.error - ) - - Text( - text = stringResource(R.string.battery_optimization_detected), - style = MaterialTheme.typography.headlineSmall.copy( - fontWeight = FontWeight.SemiBold, - color = colorScheme.onSurface - ), - textAlign = TextAlign.Center - ) - - Text( - text = stringResource(R.string.battery_optimization_explanation), - style = MaterialTheme.typography.bodyLarge.copy( - color = colorScheme.onSurfaceVariant - ), - textAlign = TextAlign.Center - ) - - Card( - modifier = Modifier.fillMaxWidth(), - colors = CardDefaults.cardColors( - containerColor = colorScheme.surfaceVariant.copy(alpha = 0.5f) + + Spacer(modifier = Modifier.height(16.dp)) + + Icon( + imageVector = Icons.Outlined.BatteryAlert, + contentDescription = "Battery Optimization", + modifier = Modifier.size(64.dp), + tint = colorScheme.error ) - ) { - Column( - modifier = Modifier.padding(16.dp), - verticalArrangement = Arrangement.spacedBy(8.dp) + + Text( + text = stringResource(R.string.battery_optimization_detected), + style = MaterialTheme.typography.headlineSmall.copy( + fontWeight = FontWeight.SemiBold, + color = colorScheme.onSurface + ), + textAlign = TextAlign.Center + ) + + Text( + text = stringResource(R.string.battery_optimization_explanation), + style = MaterialTheme.typography.bodyLarge.copy( + color = colorScheme.onSurfaceVariant + ), + textAlign = TextAlign.Center + ) + + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = colorScheme.surfaceVariant.copy(alpha = 0.5f) + ) ) { - Text( - text = stringResource(R.string.battery_optimization_why_disable), - style = MaterialTheme.typography.titleSmall.copy( - fontWeight = FontWeight.SemiBold, - color = colorScheme.onSurface + Column( + modifier = Modifier.padding(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + Text( + text = stringResource(R.string.battery_optimization_why_disable), + style = MaterialTheme.typography.titleSmall.copy( + fontWeight = FontWeight.SemiBold, + color = colorScheme.onSurface + ) ) - ) - - Text( - text = stringResource(R.string.battery_optimization_benefits), - style = MaterialTheme.typography.bodyMedium.copy( - color = colorScheme.onSurfaceVariant + + Text( + text = stringResource(R.string.battery_optimization_benefits), + style = MaterialTheme.typography.bodyMedium.copy( + color = colorScheme.onSurfaceVariant + ) ) - ) - } - } - - Spacer(modifier = Modifier.height(8.dp)) - - Button( - onClick = onDisableBatteryOptimization, - modifier = Modifier.fillMaxWidth(), - enabled = !isLoading - ) { - if (isLoading) { - CircularProgressIndicator( - modifier = Modifier.size(16.dp), - strokeWidth = 2.dp, - color = colorScheme.onPrimary - ) - Spacer(modifier = Modifier.width(8.dp)) - } - Text(stringResource(R.string.battery_optimization_disable_button)) - } - - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.spacedBy(12.dp) - ) { - OutlinedButton( - onClick = onRetry, - modifier = Modifier.weight(1f), - enabled = !isLoading - ) { - Text(stringResource(R.string.battery_optimization_check_again)) + } } - TextButton( - onClick = onSkip, - modifier = Modifier.weight(1f), - enabled = !isLoading - ) { - Text(stringResource(R.string.battery_optimization_skip)) - } + Text( + text = stringResource(R.string.battery_optimization_note), + style = MaterialTheme.typography.bodySmall.copy( + color = colorScheme.onSurfaceVariant + ), + textAlign = TextAlign.Center + ) } - Text( - text = stringResource(R.string.battery_optimization_note), - style = MaterialTheme.typography.bodySmall.copy( - color = colorScheme.onSurfaceVariant - ), - textAlign = TextAlign.Center - ) + // Fixed buttons at the bottom + Column( + verticalArrangement = Arrangement.spacedBy(12.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Button( + onClick = onDisableBatteryOptimization, + modifier = Modifier.fillMaxWidth(), + enabled = !isLoading + ) { + if (isLoading) { + CircularProgressIndicator( + modifier = Modifier.size(16.dp), + strokeWidth = 2.dp, + color = colorScheme.onPrimary + ) + Spacer(modifier = Modifier.width(8.dp)) + } + Text(stringResource(R.string.battery_optimization_disable_button)) + } + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + OutlinedButton( + onClick = onRetry, + modifier = Modifier.weight(1f), + enabled = !isLoading + ) { + Text(stringResource(R.string.battery_optimization_check_again)) + } + + TextButton( + onClick = onSkip, + modifier = Modifier.weight(1f), + enabled = !isLoading + ) { + Text(stringResource(R.string.battery_optimization_skip)) + } + } + } } + // -------------- Fix Ended for this method(BatteryOptimizationEnabledContent)----------- } @Composable From fc63184c2fbf29540324c77ab6e7b559f946be07 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sat, 19 Jul 2025 20:07:38 +0200 Subject: [PATCH 2/3] Update app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt --- .../com/bitchat/android/onboarding/BatteryOptimizationScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt index ff945b7d..436d3805 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt @@ -77,7 +77,6 @@ private fun BatteryOptimizationEnabledContent( colorScheme: ColorScheme, isLoading: Boolean ) { - // -------------- Fix Start for this method(BatteryOptimizationEnabledContent)----------- Column( modifier = Modifier.fillMaxSize() ) { From 9b85a070ace8cb2704adc6e172bbc6e5723dd348 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sat, 19 Jul 2025 20:07:50 +0200 Subject: [PATCH 3/3] Update app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt --- .../com/bitchat/android/onboarding/BatteryOptimizationScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt index 436d3805..3b1ebf9e 100644 --- a/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt +++ b/app/src/main/java/com/bitchat/android/onboarding/BatteryOptimizationScreen.kt @@ -203,7 +203,6 @@ private fun BatteryOptimizationEnabledContent( } } } - // -------------- Fix Ended for this method(BatteryOptimizationEnabledContent)----------- } @Composable