From 6d03129eb4b356d0c87838290bb08ff2e304b7b7 Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Fri, 28 Mar 2025 12:52:57 -0700 Subject: [PATCH] feat(HomeScreen): improve failure ui --- .../about => }/components/LoadFailure.kt | 4 +- .../manager/ui/screens/about/AboutScreen.kt | 1 - .../manager/ui/screens/home/HomeScreen.kt | 43 +++++++++++-------- 3 files changed, 26 insertions(+), 22 deletions(-) rename app/src/main/kotlin/com/aliucord/manager/ui/{screens/about => }/components/LoadFailure.kt (88%) diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/components/LoadFailure.kt b/app/src/main/kotlin/com/aliucord/manager/ui/components/LoadFailure.kt similarity index 88% rename from app/src/main/kotlin/com/aliucord/manager/ui/screens/about/components/LoadFailure.kt rename to app/src/main/kotlin/com/aliucord/manager/ui/components/LoadFailure.kt index dfc32c4..37ec413 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/components/LoadFailure.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/components/LoadFailure.kt @@ -1,4 +1,4 @@ -package com.aliucord.manager.ui.screens.about.components +package com.aliucord.manager.ui.components import androidx.compose.foundation.layout.* import androidx.compose.material3.* @@ -27,7 +27,7 @@ fun LoadFailure(modifier: Modifier = Modifier) { text = stringResource(R.string.network_load_fail), style = MaterialTheme.typography.titleMedium, color = MaterialTheme.colorScheme.error, - modifier = Modifier.padding(top = 10.dp, bottom = 2.dp), + modifier = Modifier.padding(top = 4.dp, bottom = 2.dp), ) } } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt index 77e4b89..e4e9643 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/about/AboutScreen.kt @@ -20,7 +20,6 @@ import cafe.adriel.voyager.koin.getScreenModel import com.aliucord.manager.R import com.aliucord.manager.ui.components.* import com.aliucord.manager.ui.screens.about.components.LeadContributor -import com.aliucord.manager.ui.screens.about.components.LoadFailure import com.aliucord.manager.ui.util.paddings.PaddingValuesSides import com.aliucord.manager.ui.util.paddings.exclude import kotlinx.parcelize.IgnoredOnParcel diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt index 0f3213d..8414a1e 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/home/HomeScreen.kt @@ -25,8 +25,7 @@ import cafe.adriel.voyager.koin.getScreenModel import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow import com.aliucord.manager.R -import com.aliucord.manager.ui.components.AnimatedVersionDisplay -import com.aliucord.manager.ui.components.ProjectHeader +import com.aliucord.manager.ui.components.* import com.aliucord.manager.ui.screens.home.components.* import com.aliucord.manager.ui.screens.patchopts.PatchOptionsScreen import com.aliucord.manager.ui.screens.plugins.PluginsScreen @@ -57,13 +56,13 @@ class HomeScreen : Screen, Parcelable { topBar = { HomeAppBar() }, ) { padding -> when (model.installations) { - is InstallsState.Fetched -> PresentInstallsContent( + is InstallsState.Fetched -> LoadedContent( model = model, padding = padding, onClickInstall = { navigator.push(PatchOptionsScreen(supportedVersion = model.supportedVersion)) }, ) - InstallsState.Fetching -> LoadingInstallsContent(padding = padding) + InstallsState.Fetching -> LoadingContent(padding = padding) InstallsState.None -> NoInstallsContent( onClickInstall = { navigator.push(PatchOptionsScreen(supportedVersion = model.supportedVersion)) }, @@ -71,25 +70,14 @@ class HomeScreen : Screen, Parcelable { .padding(padding.exclude(PaddingValuesSides.Bottom)), ) - InstallsState.Error -> { - // This is ugly asf but it should never happen - Box( - contentAlignment = Alignment.Center, - modifier = Modifier.padding(padding), - ) { - Text( - text = "Failed to fetch installations", - style = MaterialTheme.typography.labelMedium, - ) - } - } + InstallsState.Error -> FailureContent(padding = padding) } } } } @Composable -fun LoadingInstallsContent(padding: PaddingValues) { +private fun LoadingContent(padding: PaddingValues) { Column( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier @@ -102,7 +90,7 @@ fun LoadingInstallsContent(padding: PaddingValues) { } @Composable -fun PresentInstallsContent( +private fun LoadedContent( model: HomeModel, padding: PaddingValues, onClickInstall: () -> Unit, @@ -164,7 +152,7 @@ fun PresentInstallsContent( } @Composable -fun NoInstallsContent( +private fun NoInstallsContent( onClickInstall: () -> Unit, modifier: Modifier = Modifier, ) { @@ -208,3 +196,20 @@ fun NoInstallsContent( } } } + +@Composable +fun FailureContent( + padding: PaddingValues, +) { + Column( + verticalArrangement = Arrangement.spacedBy(6.dp), + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .padding(padding) + .padding(16.dp) + .fillMaxSize(), + ) { + ProjectHeader() + LoadFailure(modifier = Modifier.fillMaxSize()) + } +}