From 8241e62132338f797d0ef47075ba173d04946edb Mon Sep 17 00:00:00 2001 From: gabriel20xx Date: Tue, 11 Nov 2025 23:30:07 +0100 Subject: [PATCH] feat: improve loading state management in ListDetailViewModel to ensure timely content display --- .../app/ui/screens/ListDetailViewModel.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt index 4a077bc..d760719 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt @@ -45,12 +45,12 @@ class ListDetailViewModel( } private fun loadListData() { - // Track first emissions to flip loading off after initial data is ready + // Track first emissions; show content once fields + items arrive (list meta can lag) var hasList = false var hasFields = false var hasItems = false fun maybeLoaded() { - if (hasList && hasFields && hasItems) { + if (hasFields && hasItems) { _isLoading.value = false } } @@ -63,7 +63,7 @@ class ListDetailViewModel( _list.value = listWithFields?.list if (!hasList) { hasList = true - maybeLoaded() + // list not required to render rows; don't gate loading on it } } } @@ -95,6 +95,12 @@ class ListDetailViewModel( } } } + + // Fallback: ensure loading overlay disappears even if one of flows stalls + viewModelScope.launch { + kotlinx.coroutines.delay(2_000) + if (_isLoading.value) _isLoading.value = false + } } private fun startPeriodicSync() {