Merge pull request #15 from archem-team/issue/handle-error-of-failed-fetch-in-discover

Improve error handling and UI in DiscoverServersList
This commit is contained in:
Abron Studio 2025-08-09 11:13:47 +03:30 committed by GitHub
commit 2e32b116df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 29 additions and 10 deletions

View File

@ -3,6 +3,7 @@ package chat.revolt.composables.screens.chat.discover
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@ -41,6 +42,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
import chat.revolt.R
import chat.revolt.api.RevoltAPI
import chat.revolt.api.routes.googlesheets.ServerData
import chat.revolt.composables.generic.SquareButton
@Composable
fun DiscoverServersList(
@ -96,19 +98,36 @@ fun DiscoverServersList(
when {
uiState.isLoading -> {
CircularProgressIndicator(
modifier = Modifier
.padding(16.dp)
.align(Alignment.CenterHorizontally)
)
Box(
modifier = Modifier.weight(1f),
contentAlignment = Alignment.Center
) {
CircularProgressIndicator(
modifier = Modifier
.padding(16.dp)
)
}
}
uiState.error != null -> {
Text(stringResource(R.string.error))
}
uiState.error != null || uiState.servers.isEmpty() -> {
Box(
Modifier.weight(1f)
) {
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
uiState.servers.isEmpty() -> {
Text(stringResource(R.string.no_servers_found))
) {
Text(stringResource(R.string.error))
Spacer(Modifier.height(8.dp))
SquareButton(
onClick = viewModel::loadServers
) {
Text(stringResource(R.string.retry))
}
}
}
}
else -> {