diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt index 812c3343..ae67b21c 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomePage.kt @@ -87,10 +87,11 @@ fun HomePage( val context = LocalContext.current var firstLoad by rememberSaveable { mutableStateOf(true) } LaunchedEffect(Unit) { - viewModel.init(firstLoad, preferences).join() + viewModel.init(preferences).join() firstLoad = false } val loading by viewModel.loadingState.observeAsState(LoadingState.Loading) + val refreshing by viewModel.refreshState.observeAsState(LoadingState.Loading) val watchingRows by viewModel.watchingRows.observeAsState(listOf()) val latestRows by viewModel.latestRows.observeAsState(listOf()) LaunchedEffect(loading) { @@ -107,7 +108,7 @@ fun HomePage( } } - when (val state = if (firstLoad) loading else LoadingState.Success) { + when (val state = loading) { is LoadingState.Error -> ErrorMessage(state) LoadingState.Loading, @@ -155,7 +156,7 @@ fun HomePage( items = dialogItems, ) }, - loadingState = loading, + loadingState = refreshing, showClock = preferences.appPreferences.interfacePreferences.showClock, modifier = modifier, ) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomeViewModel.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomeViewModel.kt index cf8668a6..4292909e 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomeViewModel.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/main/HomeViewModel.kt @@ -52,18 +52,18 @@ class HomeViewModel val navDrawerItemRepository: NavDrawerItemRepository, ) : ViewModel() { val loadingState = MutableLiveData(LoadingState.Pending) + val refreshState = MutableLiveData(LoadingState.Pending) val watchingRows = MutableLiveData>(listOf()) val latestRows = MutableLiveData>(listOf()) private lateinit var preferences: UserPreferences - fun init( - firstLoad: Boolean, - preferences: UserPreferences, - ): Job { - if (firstLoad) { + fun init(preferences: UserPreferences): Job { + val reload = loadingState.value != LoadingState.Success + if (reload) { loadingState.value = LoadingState.Loading } + refreshState.value = LoadingState.Loading this.preferences = preferences val prefs = preferences.appPreferences.homePagePreferences val limit = prefs.maxItemsPerRow @@ -116,12 +116,13 @@ class HomeViewModel withContext(Dispatchers.Main) { this@HomeViewModel.watchingRows.value = watching - if (firstLoad) { + if (reload) { this@HomeViewModel.latestRows.value = pendingLatest } loadingState.value = LoadingState.Success } loadLatest(latest) + refreshState.setValueOnMain(LoadingState.Success) } } } @@ -263,7 +264,7 @@ class HomeViewModel api.playStateApi.markUnplayedItem(itemId) } withContext(Dispatchers.Main) { - init(false, preferences) + init(preferences) } } @@ -277,7 +278,7 @@ class HomeViewModel api.userLibraryApi.unmarkFavoriteItem(itemId) } withContext(Dispatchers.Main) { - init(false, preferences) + init(preferences) } } }