From cfdf3150eb486710389b0d205c116ae7ed891136 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Sat, 18 Feb 2023 15:20:42 -0800 Subject: [PATCH] create library live data function in data service --- .../omnivore/dataService/LibraryLiveData.kt | 22 +++++++++++++++++++ .../omnivore/ui/library/LibraryViewModel.kt | 11 +++------- 2 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibraryLiveData.kt diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibraryLiveData.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibraryLiveData.kt new file mode 100644 index 000000000..661a81776 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibraryLiveData.kt @@ -0,0 +1,22 @@ +package app.omnivore.omnivore.dataService + +import android.util.Log +import androidx.lifecycle.LiveData +import app.omnivore.omnivore.persistence.entities.SavedItemCardDataWithLabels +import app.omnivore.omnivore.persistence.entities.SavedItemLabel +import app.omnivore.omnivore.ui.library.SavedItemFilter +import app.omnivore.omnivore.ui.library.SavedItemSortFilter + +fun DataService.libraryLiveData( + primaryFilter: SavedItemFilter, + sortFilter: SavedItemSortFilter, + labels: List +): LiveData> { + Log.d("lld", "primaryFilter: $primaryFilter, labels: $labels") + return when (sortFilter) { + SavedItemSortFilter.NEWEST -> db.savedItemDao().getLibraryLiveData() + SavedItemSortFilter.OLDEST -> db.savedItemDao().getLibraryLiveDataSortedByOldest() + SavedItemSortFilter.RECENTLY_READ -> db.savedItemDao().getLibraryLiveDataSortedByRecentlyRead() + SavedItemSortFilter.RECENTLY_PUBLISHED -> db.savedItemDao().getLibraryLiveDataSortedByRecentlyPublished() + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt index 9ee6188fa..7d52ebe0d 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt @@ -128,17 +128,12 @@ class LibraryViewModel @Inject constructor( } } - suspend fun handleFilterChanges() { // TODO: implement + suspend fun handleFilterChanges() { if (searchTextLiveData.value != "") { performSearch(true) - } else { + } else if (appliedSortFilterLiveData.value != null && appliedFilterLiveData.value != null) { + itemsLiveDataInternal = dataService.libraryLiveData(appliedFilterLiveData.value!!, appliedSortFilterLiveData.value!!, listOf()) itemsLiveData.removeSource(itemsLiveDataInternal) - itemsLiveDataInternal = when (appliedSortFilterLiveData.value ?: SavedItemSortFilter.NEWEST) { - SavedItemSortFilter.NEWEST -> dataService.db.savedItemDao().getLibraryLiveData() - SavedItemSortFilter.OLDEST -> dataService.db.savedItemDao().getLibraryLiveDataSortedByOldest() - SavedItemSortFilter.RECENTLY_READ -> dataService.db.savedItemDao().getLibraryLiveDataSortedByRecentlyRead() - SavedItemSortFilter.RECENTLY_PUBLISHED -> dataService.db.savedItemDao().getLibraryLiveDataSortedByRecentlyPublished() - } itemsLiveData.addSource(itemsLiveDataInternal, itemsLiveData::setValue) } }