diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt index b677c484f..a6afb3c24 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt @@ -106,7 +106,14 @@ suspend fun DataService.sync(since: String, cursor: String?, limit: Int = 20): S ) } -suspend fun DataService.syncSavedItemContent(slug: String) { +suspend fun DataService.syncSavedItemContent(slug: String, skipIfStoredInDB: Boolean) { + if (skipIfStoredInDB) { + val existingItem = db.savedItemDao().getSavedItemWithLabelsAndHighlights(slug) + if (existingItem?.savedItem?.content != null) { + return + } + } + val syncResult = networker.savedItem(slug) val savedItem = syncResult.item ?: return @@ -129,8 +136,6 @@ suspend fun DataService.syncSavedItemContent(slug: String) { } db.savedItemAndHighlightCrossRefDao().insertAll(highlightCrossRefs) - - Log.d("sync", "saved content for item with id: ${savedItem.savedItemId}") } data class SavedItemSyncResult( 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 4f73811c8..063dfcfaf 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 @@ -145,6 +145,10 @@ class LibraryViewModel @Inject constructor( CoroutineScope(Dispatchers.Main).launch { isRefreshing = false } + + result.savedItemSlugs.map { + dataService.syncSavedItemContent(it, skipIfStoredInDB = true) + } } } } @@ -201,14 +205,12 @@ class LibraryViewModel @Inject constructor( // Fetch content for the initial batch only if (isInitialBatch) { for (slug in result.savedItemSlugs) { - dataService.syncSavedItemContent(slug) + dataService.syncSavedItemContent(slug, skipIfStoredInDB = false) } } val totalCount = count + result.count - Log.d("sync", "fetched ${result.count} items") - if (!result.hasError && result.hasMoreItems && result.cursor != null) { performItemSync( cursor = result.cursor, diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt index 9962f1b77..3e9b3af76 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebReaderViewModel.kt @@ -81,14 +81,14 @@ class WebReaderViewModel @Inject constructor( } private suspend fun loadItemUsingSlug(slug: String) { + loadItemFromDB(slug) + val webReaderParams = loadItemFromServer(slug) if (webReaderParams != null) { Log.d("reader", "data loaded from server") webReaderParamsLiveData.postValue(webReaderParams) isLoading = false - } else { - loadItemFromDB(slug) } }