mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Merge pull request #1465 from omnivore-app/feat/sync-sort-order
feat/sync sort order
This commit is contained in:
commit
42a4f22c4b
4 changed files with 1465 additions and 14 deletions
|
|
@ -105,7 +105,9 @@ import Views
|
|||
|
||||
func syncItems(dataService: DataService, syncStartTime: Date) async {
|
||||
let lastSyncDate = dateFormatter.date(from: dataService.lastItemSyncTime) ?? Date(timeIntervalSinceReferenceDate: 0)
|
||||
let syncResult = try? await dataService.syncLinkedItems(since: lastSyncDate, cursor: nil)
|
||||
let syncResult = try? await dataService.syncLinkedItems(since: lastSyncDate,
|
||||
cursor: nil,
|
||||
deferFetchingMore: true)
|
||||
|
||||
if syncResult != nil {
|
||||
dataService.lastItemSyncTime = dateFormatter.string(from: syncStartTime)
|
||||
|
|
@ -169,7 +171,6 @@ import Views
|
|||
|
||||
func loadItems(dataService: DataService, audioController _: AudioController, isRefresh: Bool) async {
|
||||
let syncStartTime = Date()
|
||||
let start = CFAbsoluteTimeGetCurrent()
|
||||
|
||||
isLoading = true
|
||||
showLoadingBar = true
|
||||
|
|
@ -186,9 +187,9 @@ import Views
|
|||
// For now we are forcing the search because we are fetching items in reverse
|
||||
// with the sync API, but search fetches in descending order
|
||||
|
||||
// if appliedFilter != LinkedItemFilter.inbox.rawValue {
|
||||
await loadSearchQuery(dataService: dataService, isRefresh: isRefresh)
|
||||
// }
|
||||
if appliedFilter != LinkedItemFilter.inbox.rawValue {
|
||||
await loadSearchQuery(dataService: dataService, isRefresh: isRefresh)
|
||||
}
|
||||
} else {
|
||||
await loadSearchQuery(dataService: dataService, isRefresh: isRefresh)
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -14,7 +14,8 @@ public extension DataService {
|
|||
func syncLinkedItems(
|
||||
since date: Date,
|
||||
cursor: String?,
|
||||
previousQueryResult: LinkedItemSyncResult? = nil
|
||||
previousQueryResult: LinkedItemSyncResult? = nil,
|
||||
deferFetchingMore: Bool
|
||||
) async throws -> LinkedItemSyncResult? {
|
||||
if previousQueryResult == nil {
|
||||
// Send offline changes to server before fetching items
|
||||
|
|
@ -36,12 +37,24 @@ public extension DataService {
|
|||
cursor: fetchResult.cursor
|
||||
)
|
||||
|
||||
if fetchResult.hasMoreItems, (previousQueryResult?.updatedItemIDs.count ?? 0) < 200 {
|
||||
return try await syncLinkedItems(
|
||||
since: date,
|
||||
cursor: fetchResult.cursor,
|
||||
previousQueryResult: result
|
||||
)
|
||||
if fetchResult.hasMoreItems, (previousQueryResult?.updatedItemIDs.count ?? 0) < 40 {
|
||||
if deferFetchingMore {
|
||||
Task.detached(priority: .background) {
|
||||
try await self.syncLinkedItems(
|
||||
since: date,
|
||||
cursor: fetchResult.cursor,
|
||||
previousQueryResult: result,
|
||||
deferFetchingMore: deferFetchingMore
|
||||
)
|
||||
}
|
||||
} else {
|
||||
return try await syncLinkedItems(
|
||||
since: date,
|
||||
cursor: fetchResult.cursor,
|
||||
previousQueryResult: result,
|
||||
deferFetchingMore: deferFetchingMore
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
|
|
|
|||
|
|
@ -62,11 +62,14 @@ extension DataService {
|
|||
)
|
||||
}
|
||||
|
||||
let sort = InputObjects.SortParams(by: Enums.SortBy.savedAt, order: OptionalArgument(Enums.SortOrder.descending))
|
||||
|
||||
let query = Selection.Query {
|
||||
try $0.updatesSince(
|
||||
after: OptionalArgument(cursor),
|
||||
first: OptionalArgument(limit),
|
||||
since: DateTime(from: since),
|
||||
sort: OptionalArgument(sort),
|
||||
selection: selection
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue