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.
This commit is contained in:
Faded
2025-07-19 18:56:39 +05:00
parent fa47916895
commit 83144afd66
@@ -2,6 +2,8 @@ package com.bitchat.android.onboarding
import androidx.compose.animation.core.* import androidx.compose.animation.core.*
import androidx.compose.foundation.layout.* 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.Icons
import androidx.compose.material.icons.filled.* import androidx.compose.material.icons.filled.*
import androidx.compose.material.icons.outlined.* import androidx.compose.material.icons.outlined.*
@@ -75,119 +77,134 @@ private fun BatteryOptimizationEnabledContent(
colorScheme: ColorScheme, colorScheme: ColorScheme,
isLoading: Boolean isLoading: Boolean
) { ) {
// -------------- Fix Start for this method(BatteryOptimizationEnabledContent)-----------
Column( Column(
verticalArrangement = Arrangement.spacedBy(24.dp), modifier = Modifier.fillMaxSize()
horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Text( // Scrollable content area
text = "bitchat*", Column(
style = MaterialTheme.typography.headlineLarge.copy( modifier = Modifier
fontFamily = FontFamily.Monospace, .weight(1f)
fontWeight = FontWeight.Bold, .verticalScroll(rememberScrollState())
color = colorScheme.primary .padding(bottom = 16.dp),
) verticalArrangement = Arrangement.spacedBy(24.dp),
) horizontalAlignment = Alignment.CenterHorizontally
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)
)
) { ) {
Column( Text(
modifier = Modifier.padding(16.dp), text = "bitchat*",
verticalArrangement = Arrangement.spacedBy(8.dp) 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)
)
) { ) {
Text( Column(
text = stringResource(R.string.battery_optimization_why_disable), modifier = Modifier.padding(16.dp),
style = MaterialTheme.typography.titleSmall.copy( verticalArrangement = Arrangement.spacedBy(8.dp)
fontWeight = FontWeight.SemiBold, ) {
color = colorScheme.onSurface Text(
text = stringResource(R.string.battery_optimization_why_disable),
style = MaterialTheme.typography.titleSmall.copy(
fontWeight = FontWeight.SemiBold,
color = colorScheme.onSurface
)
) )
)
Text( Text(
text = stringResource(R.string.battery_optimization_benefits), text = stringResource(R.string.battery_optimization_benefits),
style = MaterialTheme.typography.bodyMedium.copy( style = MaterialTheme.typography.bodyMedium.copy(
color = colorScheme.onSurfaceVariant color = colorScheme.onSurfaceVariant
)
) )
) }
} }
Text(
text = stringResource(R.string.battery_optimization_note),
style = MaterialTheme.typography.bodySmall.copy(
color = colorScheme.onSurfaceVariant
),
textAlign = TextAlign.Center
)
} }
Spacer(modifier = Modifier.height(8.dp)) // Fixed buttons at the bottom
Column(
Button( verticalArrangement = Arrangement.spacedBy(12.dp),
onClick = onDisableBatteryOptimization, horizontalAlignment = Alignment.CenterHorizontally
modifier = Modifier.fillMaxWidth(),
enabled = !isLoading
) { ) {
if (isLoading) { Button(
CircularProgressIndicator( onClick = onDisableBatteryOptimization,
modifier = Modifier.size(16.dp), modifier = Modifier.fillMaxWidth(),
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 enabled = !isLoading
) { ) {
Text(stringResource(R.string.battery_optimization_check_again)) 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))
} }
TextButton( Row(
onClick = onSkip, modifier = Modifier.fillMaxWidth(),
modifier = Modifier.weight(1f), horizontalArrangement = Arrangement.spacedBy(12.dp)
enabled = !isLoading
) { ) {
Text(stringResource(R.string.battery_optimization_skip)) 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
)
} }
// -------------- Fix Ended for this method(BatteryOptimizationEnabledContent)-----------
} }
@Composable @Composable