From f352f2a3de1e89196aae8fdfba63a67da8f02afb Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 18 Jan 2023 08:59:08 -0800 Subject: [PATCH] fetch cards list then content for first 20 updated items --- .../omnivore/dataService/LibrarySync.kt | 2 +- .../omnivore/ui/library/LibraryViewModel.kt | 22 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) 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 a1030378f..fb73fe3ed 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 @@ -4,7 +4,7 @@ import android.util.Log import app.omnivore.omnivore.networking.* import app.omnivore.omnivore.persistence.entities.* -suspend fun DataService.sync(since: String, cursor: String?, limit: Int = 15): SavedItemSyncResult { +suspend fun DataService.sync(since: String, cursor: String?, limit: Int = 20): SavedItemSyncResult { val syncResult = networker.savedItemUpdates(cursor = cursor, limit = limit, since = since) ?: return SavedItemSyncResult.errorResult val savedItems = syncResult.items.map { 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 20adabb6a..35b185efd 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 @@ -81,23 +81,29 @@ class LibraryViewModel @Inject constructor( } } - private suspend fun performItemSync(cursor: String?, since: String, count: Int, startTime: String) { + private suspend fun performItemSync(cursor: String?, since: String, count: Int, startTime: String, fetchContentSlugs: List = listOf()) { dataService.syncOfflineItemsWithServerIfNeeded() val result = dataService.sync(since = since, cursor = cursor) - // TODO: Defer this until later? /fix - this results in a 429 server error -// for (slug in result.savedItemSlugs) { -// dataService.syncSavedItemContent(slug) -// } - val totalCount = count + result.count Log.d("sync", "fetched ${result.count} items") - if (totalCount < 180 && !result.hasError && result.hasMoreItems && result.cursor != null) { - performItemSync(cursor = result.cursor, since = since, count = totalCount, startTime = startTime) + if (!result.hasError && result.hasMoreItems && result.cursor != null) { + performItemSync( + cursor = result.cursor, + since = since, + count = totalCount, + startTime = startTime, + fetchContentSlugs = fetchContentSlugs.ifEmpty { result.savedItemSlugs } + + ) } else { datastoreRepo.putString(DatastoreKeys.libraryLastSyncTimestamp, startTime) + + for (slug in result.savedItemSlugs) { + dataService.syncSavedItemContent(slug) + } } }