diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 48c33bf..bc6a498 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -15,8 +15,8 @@ android { applicationId = "de.bollwerk.app" minSdk = 26 targetSdk = 35 - versionCode = 23 - versionName = "1.7.23" + versionCode = 24 + versionName = "1.7.24" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField("boolean", "FEATURE_CAMERA_ENABLED", "false") diff --git a/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListScreen.kt b/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListScreen.kt index 8401d86..944ef56 100644 --- a/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListScreen.kt +++ b/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListScreen.kt @@ -109,6 +109,14 @@ internal fun ResourceListScreen( } } + // Show error message from refresh + uiState.errorMessage?.let { msg -> + LaunchedEffect(msg) { + snackbarHostState.showSnackbar(msg) + viewModel.clearError() + } + } + Scaffold( topBar = { TopAppBar( diff --git a/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListViewModel.kt b/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListViewModel.kt index a238bd8..88efae9 100644 --- a/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListViewModel.kt +++ b/app/src/main/java/de/bollwerk/app/ui/resources/ResourceListViewModel.kt @@ -36,7 +36,8 @@ internal data class ResourceListUiState( val sortMode: SortMode = SortMode.TITLE_ASC, val isLoading: Boolean = false, val allTags: List = emptyList(), - val downloadStates: Map = emptyMap() + val downloadStates: Map = emptyMap(), + val errorMessage: String? = null ) @HiltViewModel @@ -62,6 +63,8 @@ internal class ResourceListViewModel @Inject constructor( _uiState.update { it.copy(isLoading = true) } try { resourceRepository.refreshFromServer() + } catch (_: Exception) { + _uiState.update { it.copy(errorMessage = "Aktualisierung fehlgeschlagen") } } finally { _uiState.update { it.copy(isLoading = false) } } @@ -117,4 +120,8 @@ internal class ResourceListViewModel @Inject constructor( state.copy(downloadStates = state.downloadStates + (guid to DownloadState.Idle)) } } + + fun clearError() { + _uiState.update { it.copy(errorMessage = null) } + } }