Add check so that we don't update article statuses for articles that we have pending statuses to send. Issue #1515

This commit is contained in:
Maurice Parker
2020-01-02 18:21:18 -07:00
parent aaa11e1343
commit 915d73785c
3 changed files with 40 additions and 7 deletions

View File

@@ -56,7 +56,15 @@ struct SyncStatusTable: DatabaseTable {
database.executeUpdate(updateSQL, withArgumentsIn: parameters)
}
}
func selectPendingReadStatusArticleIDs() -> [String] {
selectPendingArticleIDsAsync(.read)
}
func selectPendingStarredStatusArticleIDs() -> [String] {
selectPendingArticleIDsAsync(.starred)
}
func deleteSelectedForProcessing(_ articleIDs: [String]) {
queue.runInTransaction { database in
let parameters = articleIDs.map { $0 as AnyObject }
@@ -88,4 +96,16 @@ private extension SyncStatusTable {
return SyncStatus(articleID: articleID, key: key, flag: flag, selected: selected)
}
func selectPendingArticleIDsAsync(_ statusKey: ArticleStatus.Key) -> [String] {
var articleIDs: [String]? = nil
queue.runInDatabaseSync { database in
let selectSQL = "select articleID from syncStatus where selected == false and key = \"\(statusKey.rawValue)\";"
if let resultSet = database.executeQuery(selectSQL, withArgumentsIn: nil) {
articleIDs = resultSet.compactMap { $0.string(forColumnIndex: 0) }
}
}
return articleIDs != nil ? articleIDs! : [String]()
}
}