From 7f082b9c9754fe79f1d60df43c9859c0489e124c Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Mon, 21 Oct 2024 18:30:47 +0700 Subject: [PATCH] Reload saved-searches when screen is navigated back to --- .../ui/browse/source/feed/SourceFeedScreen.kt | 6 ++++++ .../browse/source/feed/SourceFeedScreenModel.kt | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt index 6e235b788..58a42cb64 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.browse.source.feed import androidx.activity.compose.BackHandler import androidx.compose.animation.Crossfade import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -76,6 +77,11 @@ class SourceFeedScreen(val sourceId: Long) : Screen() { } } + LaunchedEffect(navigator.lastItem) { + // Reload saved-searches when screen is navigated back to + screenModel.reloadSavedSearches() + } + val bulkFavoriteScreenModel = rememberScreenModel { BulkFavoriteScreenModel() } val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() val showingFeedOrderScreen = rememberSaveable { mutableStateOf(false) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt index 34a41b811..0789423cf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreenModel.kt @@ -99,10 +99,9 @@ open class SourceFeedScreenModel( // KMK <-- setFilters(source.getFilterList()) - screenModelScope.launchIO { - val searches = loadSearches() - mutableState.update { it.copy(savedSearches = searches) } - } + // KMK --> + reloadSavedSearches() + // KMK <-- getFeedSavedSearchBySourceId.subscribe(source.id) .onEach { val items = getSourcesToGetFeed(it) @@ -266,6 +265,16 @@ open class SourceFeedScreenModel( } } } + + // KMK --> + fun reloadSavedSearches() { + screenModelScope.launchIO { + val searches = loadSearches() + mutableState.update { it.copy(savedSearches = searches) } + } + } + // KMK <-- + private suspend fun loadSearches() = getExhSavedSearch.await(source.id, (source as CatalogueSource)::getFilterList) .sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, EXHSavedSearch::name))