feat: improve loading state management in ListDetailViewModel to ensure timely content display
This commit is contained in:
+9
-3
@@ -45,12 +45,12 @@ class ListDetailViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun loadListData() {
|
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 hasList = false
|
||||||
var hasFields = false
|
var hasFields = false
|
||||||
var hasItems = false
|
var hasItems = false
|
||||||
fun maybeLoaded() {
|
fun maybeLoaded() {
|
||||||
if (hasList && hasFields && hasItems) {
|
if (hasFields && hasItems) {
|
||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ class ListDetailViewModel(
|
|||||||
_list.value = listWithFields?.list
|
_list.value = listWithFields?.list
|
||||||
if (!hasList) {
|
if (!hasList) {
|
||||||
hasList = true
|
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() {
|
private fun startPeriodicSync() {
|
||||||
|
|||||||
Reference in New Issue
Block a user