create library live data function in data service

This commit is contained in:
Satindar Dhillon 2023-02-18 15:20:42 -08:00
parent c1297b8baf
commit cfdf3150eb
2 changed files with 25 additions and 8 deletions

View file

@ -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<SavedItemLabel>
): LiveData<List<SavedItemCardDataWithLabels>> {
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()
}
}

View file

@ -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)
}
}