RNDAMP-8921: use new bottom bar

This commit is contained in:
2026-08-30 13:55:35 +03:00
parent ed11b3c967
commit 63116b4a08
3 changed files with 66 additions and 71 deletions
@@ -5,7 +5,6 @@ import androiddev.feature.updater.updater_client.generated.resources.updater_btn
import androiddev.feature.updater.updater_client.generated.resources.updater_btn_download
import androiddev.feature.updater.updater_client.generated.resources.updater_btn_grant
import androiddev.feature.updater.updater_client.generated.resources.updater_btn_install
import androiddev.feature.updater.updater_client.generated.resources.updater_btn_retry
import androiddev.feature.updater.updater_client.generated.resources.updater_changelog_empty
import androiddev.feature.updater.updater_client.generated.resources.updater_changelog_title
import androiddev.feature.updater.updater_client.generated.resources.updater_desc_permission
@@ -13,7 +12,6 @@ import androiddev.feature.updater.updater_client.generated.resources.updater_dow
import androiddev.feature.updater.updater_client.generated.resources.updater_title_available
import androiddev.feature.updater.updater_client.generated.resources.updater_title_completed
import androiddev.feature.updater.updater_client.generated.resources.updater_title_downloading
import androiddev.feature.updater.updater_client.generated.resources.updater_title_error
import androiddev.feature.updater.updater_client.generated.resources.updater_title_not_found
import androiddev.feature.updater.updater_client.generated.resources.updater_title_permission
import androiddev.feature.updater.updater_client.generated.resources.updater_title_ready
@@ -43,16 +41,14 @@ import com.arkivanov.decompose.extensions.compose.subscribeAsState
import org.jetbrains.compose.resources.StringResource
import org.jetbrains.compose.resources.stringResource
import ru.shadowsparky.ui.components.AlertContent
import ru.shadowsparky.ui.components.ErrorContent
import ru.shadowsparky.ui.components.LazyColumn
import ru.shadowsparky.ui.components.Loading
import ru.shadowsparky.updater.domain.UpdateState
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun UpdateDialog(
component: UpdateComponent,
modifier: Modifier = Modifier
) {
fun UpdateDialog(component: UpdateComponent, modifier: Modifier = Modifier) {
val state by component.state.subscribeAsState()
val canDismiss = remember(state) { !component.isForceUpdate }
val isVisible = remember(state) { state !is UpdateState.Idle }
@@ -90,8 +86,7 @@ fun UpdateDialog(
is UpdateState.Error -> UpdateErrorContent(
message = currentState.message,
onRetryClick = { component.checkUpdates() },
focusRequester = focusRequester
onRetryClick = { component.checkUpdates() }
)
is UpdateState.UpToDate -> {
@@ -158,6 +153,9 @@ private fun UpdateAvailableContent(
style = MaterialTheme.typography.bodyMedium
)
}
item {
Spacer(modifier = Modifier.height(8.dp))
}
item {
Button(
onClick = onDownloadClick,
@@ -290,76 +288,51 @@ private fun UpdateFinishedContent(
private fun UpdateErrorContent(
message: String,
onRetryClick: () -> Unit,
focusRequester: FocusRequester,
modifier: Modifier = Modifier
) {
Column(
modifier = modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
Text(
text = stringResource(Res.string.updater_title_error),
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.error
)
Text(text = message, style = MaterialTheme.typography.bodyMedium)
Button(
onClick = onRetryClick,
modifier = Modifier.focusRequester(focusRequester).fillMaxWidth()
) {
Text(
stringResource(Res.string.updater_btn_retry),
style = MaterialTheme.typography.labelLarge
)
}
}
ErrorContent(
message,
modifier,
onClick = onRetryClick,
buttonModifier = Modifier.fillMaxWidth()
)
}
@Preview
@Composable
private fun UpdateAvailablePreview() {
MaterialTheme {
UpdateAvailableContent(
versionName = "v1.4.0",
changeLog = "- Добавили темную тему\n- Исправили падение на главном экране\n- Повысили стабильность",
onDownloadClick = {},
focusRequester = FocusRequester()
)
}
UpdateAvailableContent(
versionName = "v1.4.0",
changeLog = "- Добавили темную тему\n- Исправили падение на главном экране\n- Повысили стабильность",
onDownloadClick = {},
focusRequester = FocusRequester()
)
}
@Preview
@Composable
private fun UpdateDownloadingPreview() {
MaterialTheme {
UpdateDownloadingContent(
progress = 0.45f,
downloadedBytes = 24_117_248L, // ~23 MB
totalBytes = 52_428_800L // 50 MB
)
}
UpdateDownloadingContent(
progress = 0.45f,
downloadedBytes = 24_117_248L, // ~23 MB
totalBytes = 52_428_800L // 50 MB
)
}
@Preview
@Composable
private fun UpdatePermissionPreview() {
MaterialTheme {
UpdatePermissionContent(
onGrantClick = {},
focusRequester = FocusRequester()
)
}
UpdatePermissionContent(
onGrantClick = {},
focusRequester = FocusRequester()
)
}
@Preview
@Composable
private fun UpdateErrorPreview() {
MaterialTheme {
UpdateErrorContent(
message = "Http status 503: Service Unavailable",
onRetryClick = {},
focusRequester = FocusRequester()
)
}
UpdateErrorContent(
message = "Http status 503: Service Unavailable",
onRetryClick = {}
)
}