diff --git a/app/src/main/java/live/shirabox/shirabox/ui/activity/update/AppUpdateActivity.kt b/app/src/main/java/live/shirabox/shirabox/ui/activity/update/AppUpdateActivity.kt index 266d483..e1a0acc 100644 --- a/app/src/main/java/live/shirabox/shirabox/ui/activity/update/AppUpdateActivity.kt +++ b/app/src/main/java/live/shirabox/shirabox/ui/activity/update/AppUpdateActivity.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.outlined.RocketLaunch @@ -30,7 +31,6 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton -import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar @@ -126,9 +126,10 @@ fun AppUpdateScreen( val isUpdating = remember { mutableStateOf(false) } val dialogVisibilityState = remember { mutableStateOf(false) } - Scaffold( - modifier = Modifier.fillMaxSize(), - topBar = { + LazyColumn( + modifier = Modifier.fillMaxSize() + ) { + item { TopAppBar( title = {}, navigationIcon = { @@ -138,10 +139,78 @@ fun AppUpdateScreen( contentDescription = "Finish", ) } - }, + } ) - }, - bottomBar = { + } + + item { + Column( + modifier = Modifier + .padding(24.dp, 0.dp), + verticalArrangement = Arrangement.spacedBy(32.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Box( + modifier = Modifier.fillMaxWidth(), + contentAlignment = Alignment.Center + ) { + Icon( + modifier = Modifier.size(64.dp), + imageVector = when (appUpdateState.updateAvailable) { + true -> Icons.Outlined.RocketLaunch + false -> Icons.Outlined.Verified + }, + tint = MaterialTheme.colorScheme.primary, + contentDescription = "rocket" + ) + } + Text( + modifier = Modifier.fillMaxWidth(), + text = when (appUpdateState.updateAvailable) { + true -> stringResource(id = R.string.update) + false -> stringResource(id = R.string.no_update_required) + }, + textAlign = TextAlign.Center, + fontWeight = FontWeight.Medium, + fontSize = 28.sp + ) + + HorizontalDivider( + modifier = Modifier.widthIn(32.dp, 256.dp) + ) + + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(16.dp), + horizontalAlignment = Alignment.Start + ) { + RichText { + val parser = remember { CommonmarkAstNodeParser() } + val astNode = remember(parser) { parser.parse(appUpdateState.release.notes) } + + BasicMarkdown(astNode = astNode) + } + + Column( + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + val formatter = SimpleDateFormat("dd.MM.yyyy", Locale.getDefault()) + val dateString = formatter.format(Date(appUpdateState.release.createdAt)) + + Text( + text = appUpdateState.release.tag, + color = MaterialTheme.colorScheme.onBackground.copy(0.7f) + ) + Text( + text = stringResource(id = R.string.update_build_date, dateString), + color = MaterialTheme.colorScheme.onBackground.copy(0.7f) + ) + } + } + } + } + + item { if (appUpdateState.updateAvailable) { Box( modifier = Modifier @@ -162,72 +231,6 @@ fun AppUpdateScreen( } } } - ) { - Column( - modifier = Modifier - .padding(24.dp, 0.dp) - .padding(it), - verticalArrangement = Arrangement.spacedBy(32.dp), - horizontalAlignment = Alignment.CenterHorizontally - ) { - Box( - modifier = Modifier.fillMaxWidth(), - contentAlignment = Alignment.Center - ) { - Icon( - modifier = Modifier.size(64.dp), - imageVector = when (appUpdateState.updateAvailable) { - true -> Icons.Outlined.RocketLaunch - false -> Icons.Outlined.Verified - }, - tint = MaterialTheme.colorScheme.primary, - contentDescription = "rocket" - ) - } - Text( - modifier = Modifier.fillMaxWidth(), - text = when (appUpdateState.updateAvailable) { - true -> stringResource(id = R.string.update) - false -> stringResource(id = R.string.no_update_required) - }, - textAlign = TextAlign.Center, - fontWeight = FontWeight.Medium, - fontSize = 28.sp - ) - - HorizontalDivider( - modifier = Modifier.widthIn(32.dp, 256.dp) - ) - - Column( - modifier = Modifier.fillMaxWidth(), - verticalArrangement = Arrangement.spacedBy(16.dp), - horizontalAlignment = Alignment.Start - ) { - RichText { - val parser = remember { CommonmarkAstNodeParser() } - val astNode = remember(parser) { parser.parse(appUpdateState.release.notes) } - - BasicMarkdown(astNode = astNode) - } - - Column( - verticalArrangement = Arrangement.spacedBy(8.dp) - ) { - val formatter = SimpleDateFormat("dd.MM.yyyy", Locale.getDefault()) - val dateString = formatter.format(Date(appUpdateState.release.createdAt)) - - Text( - text = appUpdateState.release.tag, - color = MaterialTheme.colorScheme.onBackground.copy(0.7f) - ) - Text( - text = stringResource(id = R.string.update_build_date, dateString), - color = MaterialTheme.colorScheme.onBackground.copy(0.7f) - ) - } - } - } } UpdateDialog(