From 3868d0bc7cf16aa6764b0214126c8c3a32f1f2e4 Mon Sep 17 00:00:00 2001
From: grakovne <grakovne@gmail.com>
Date: Fri, 20 Dec 2024 21:10:15 +0100
Subject: [PATCH] wip

---
 .../grakovne/lissen/ui/screens/library/LibraryScreen.kt    | 7 ++++++-
 .../org/grakovne/lissen/viewmodel/SettingsViewModel.kt     | 4 ++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/app/src/main/java/org/grakovne/lissen/ui/screens/library/LibraryScreen.kt b/app/src/main/java/org/grakovne/lissen/ui/screens/library/LibraryScreen.kt
index ad919c82..e43789b0 100644
--- a/app/src/main/java/org/grakovne/lissen/ui/screens/library/LibraryScreen.kt
+++ b/app/src/main/java/org/grakovne/lissen/ui/screens/library/LibraryScreen.kt
@@ -36,6 +36,7 @@ import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -69,6 +70,7 @@ import org.grakovne.lissen.ui.screens.library.composables.placeholder.RecentBook
 import org.grakovne.lissen.viewmodel.ContentCachingModelView
 import org.grakovne.lissen.viewmodel.LibraryViewModel
 import org.grakovne.lissen.viewmodel.PlayerViewModel
+import org.grakovne.lissen.viewmodel.SettingsViewModel
 
 @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
 @Composable
@@ -76,6 +78,7 @@ fun LibraryScreen(
     navController: AppNavigationService,
     libraryViewModel: LibraryViewModel = hiltViewModel(),
     playerViewModel: PlayerViewModel = hiltViewModel(),
+    settingsViewModel: SettingsViewModel = hiltViewModel(),
     contentCachingModelView: ContentCachingModelView = hiltViewModel(),
     imageLoader: ImageLoader,
     networkQualityService: NetworkQualityService,
@@ -86,6 +89,7 @@ fun LibraryScreen(
 
     val recentBooks: List<RecentBook> by libraryViewModel.recentBooks.observeAsState(emptyList())
 
+    var currentLibraryId by rememberSaveable { mutableStateOf("") }
     var pullRefreshing by remember { mutableStateOf(false) }
     val recentBookRefreshing by libraryViewModel.recentBookUpdating.observeAsState(false)
     val searchRequested by libraryViewModel.searchRequested.observeAsState(false)
@@ -155,9 +159,10 @@ fun LibraryScreen(
     }
 
     LaunchedEffect(Unit) {
-        if (library.itemCount == 0) {
+        if (library.itemCount == 0 || currentLibraryId != settingsViewModel.fetchPreferredLibraryId()) {
             libraryViewModel.refreshRecentListening()
             libraryViewModel.refreshLibrary()
+            currentLibraryId = settingsViewModel.fetchPreferredLibraryId()
         }
     }
 
diff --git a/app/src/main/java/org/grakovne/lissen/viewmodel/SettingsViewModel.kt b/app/src/main/java/org/grakovne/lissen/viewmodel/SettingsViewModel.kt
index 2bef958b..c76c0657 100644
--- a/app/src/main/java/org/grakovne/lissen/viewmodel/SettingsViewModel.kt
+++ b/app/src/main/java/org/grakovne/lissen/viewmodel/SettingsViewModel.kt
@@ -80,6 +80,10 @@ class SettingsViewModel @Inject constructor(
         }
     }
 
+    fun fetchPreferredLibraryId(): String {
+        return preferences.getPreferredLibrary()?.id ?: ""
+    }
+
     fun preferLibrary(library: Library) {
         _preferredLibrary.value = library
         preferences.savePreferredLibrary(library)