Make SyncDatabase.resetSelectedForProcessing and .deleteSelectedForProcessing take Set parameter instead of Array.
This commit is contained in:
parent
a474a8fc18
commit
ab4d51b462
@ -66,7 +66,7 @@ private extension CloudKitArticlesZoneDelegate {
|
||||
return
|
||||
}
|
||||
|
||||
try? await database.deleteSelectedForProcessing(Array(deletableArticleIDs))
|
||||
try? await database.deleteSelectedForProcessing(deletableArticleIDs)
|
||||
try? await account?.delete(articleIDs: deletableArticleIDs)
|
||||
}
|
||||
|
||||
|
@ -729,11 +729,12 @@ private extension FeedbinAccountDelegate {
|
||||
let articleIDGroups = articleIDs.chunked(into: 1000)
|
||||
for articleIDGroup in articleIDGroups {
|
||||
|
||||
let articleIDsGroupAsString = Set(articleIDGroup.map { String($0) })
|
||||
do {
|
||||
try await apiCall(articleIDGroup)
|
||||
try? await database.deleteSelectedForProcessing(articleIDGroup.map { String($0) } )
|
||||
try? await database.deleteSelectedForProcessing(articleIDsGroupAsString)
|
||||
} catch {
|
||||
try? await database.resetSelectedForProcessing(articleIDGroup.map { String($0) } )
|
||||
try? await database.resetSelectedForProcessing(articleIDsGroupAsString)
|
||||
localError = error
|
||||
os_log(.error, log: self.log, "Article status sync call failed: %@.", error.localizedDescription)
|
||||
}
|
||||
|
@ -563,9 +563,9 @@ final class FeedlyAccountDelegate: AccountDelegate {
|
||||
|
||||
do {
|
||||
try await caller.mark(articleIDs, as: statusAction.action)
|
||||
try? await syncDatabase.deleteSelectedForProcessing(Array(articleIDs))
|
||||
try? await syncDatabase.deleteSelectedForProcessing(articleIDs)
|
||||
} catch {
|
||||
try? await syncDatabase.resetSelectedForProcessing(Array(articleIDs))
|
||||
try? await syncDatabase.resetSelectedForProcessing(articleIDs)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ extension NewsBlurAccountDelegate {
|
||||
} catch {
|
||||
errorOccurred = true
|
||||
os_log(.error, log: self.log, "Story status sync call failed: %@.", error.localizedDescription)
|
||||
try? await syncDatabase.resetSelectedForProcessing(storyHashGroup.map { String($0) } )
|
||||
try? await syncDatabase.resetSelectedForProcessing(Set(storyHashGroup))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -693,10 +693,10 @@ private extension ReaderAPIAccountDelegate {
|
||||
|
||||
do {
|
||||
let _ = try await apiCall(articleIDGroup)
|
||||
try? await database.deleteSelectedForProcessing(articleIDGroup.map { $0 } )
|
||||
try? await database.deleteSelectedForProcessing(Set(articleIDGroup))
|
||||
} catch {
|
||||
os_log(.error, log: self.log, "Article status sync call failed: %@.", error.localizedDescription)
|
||||
try? await database.resetSelectedForProcessing(articleIDGroup.map { $0 } )
|
||||
try? await database.resetSelectedForProcessing(Set(articleIDGroup))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -142,7 +142,7 @@ private extension CloudKitSendStatusOperation {
|
||||
// but the articles didn't come back in the fetch. We need to clean up those sync records
|
||||
// and stop processing.
|
||||
if statusUpdates.isEmpty {
|
||||
try? await self.database.deleteSelectedForProcessing(articleIDs)
|
||||
try? await self.database.deleteSelectedForProcessing(Set(articleIDs))
|
||||
done(true)
|
||||
return
|
||||
}
|
||||
@ -151,10 +151,10 @@ private extension CloudKitSendStatusOperation {
|
||||
Task { @MainActor in
|
||||
switch result {
|
||||
case .success:
|
||||
try? await self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID }))
|
||||
try? await self.database.deleteSelectedForProcessing(Set(statusUpdates.map({ $0.articleID })))
|
||||
done(false)
|
||||
case .failure(let error):
|
||||
try? await self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID }))
|
||||
try? await self.database.resetSelectedForProcessing(Set(syncStatuses.map({ $0.articleID })))
|
||||
self.processAccountError(error)
|
||||
os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription)
|
||||
completion(true)
|
||||
@ -162,7 +162,7 @@ private extension CloudKitSendStatusOperation {
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
try? await self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID }))
|
||||
try? await self.database.resetSelectedForProcessing(Set(syncStatuses.map({ $0.articleID })))
|
||||
os_log(.error, log: self.log, "Send article status fetch articles error: %@.", error.localizedDescription)
|
||||
completion(true)
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ public actor SyncDatabase {
|
||||
syncStatusTable.resetAllSelectedForProcessing(database: database)
|
||||
}
|
||||
|
||||
public func resetSelectedForProcessing(_ articleIDs: [String]) throws {
|
||||
public func resetSelectedForProcessing(_ articleIDs: Set<String>) throws {
|
||||
|
||||
guard let database else {
|
||||
throw DatabaseError.suspended
|
||||
@ -84,7 +84,7 @@ public actor SyncDatabase {
|
||||
syncStatusTable.resetSelectedForProcessing(articleIDs, database: database)
|
||||
}
|
||||
|
||||
public func deleteSelectedForProcessing(_ articleIDs: [String]) throws {
|
||||
public func deleteSelectedForProcessing(_ articleIDs: Set<String>) throws {
|
||||
|
||||
guard let database else {
|
||||
throw DatabaseError.suspended
|
||||
|
@ -62,7 +62,7 @@ struct SyncStatusTable {
|
||||
database.executeUpdateInTransaction(updateSQL)
|
||||
}
|
||||
|
||||
func resetSelectedForProcessing(_ articleIDs: [String], database: FMDatabase) {
|
||||
func resetSelectedForProcessing(_ articleIDs: Set<String>, database: FMDatabase) {
|
||||
|
||||
guard !articleIDs.isEmpty else {
|
||||
return
|
||||
@ -75,7 +75,7 @@ struct SyncStatusTable {
|
||||
database.executeUpdateInTransaction(updateSQL, withArgumentsIn: parameters)
|
||||
}
|
||||
|
||||
func deleteSelectedForProcessing(_ articleIDs: [String], database: FMDatabase) {
|
||||
func deleteSelectedForProcessing(_ articleIDs: Set<String>, database: FMDatabase) {
|
||||
|
||||
guard !articleIDs.isEmpty else {
|
||||
return
|
||||
|
Loading…
x
Reference in New Issue
Block a user