diff --git a/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift b/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift index f1c446cba..eddcd43b1 100644 --- a/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift +++ b/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift @@ -472,6 +472,10 @@ final class FeedbinAccountDelegate: AccountDelegate { } database.insertStatuses(syncStatuses) + if database.selectPendingCount() > 100 { + sendArticleStatus(for: account) {} + } + return account.update(articles, statusKey: statusKey, flag: flag) } diff --git a/Frameworks/SyncDatabase/SyncDatabase.swift b/Frameworks/SyncDatabase/SyncDatabase.swift index a2355c881..39a781391 100644 --- a/Frameworks/SyncDatabase/SyncDatabase.swift +++ b/Frameworks/SyncDatabase/SyncDatabase.swift @@ -31,6 +31,10 @@ public final class SyncDatabase { return syncStatusTable.selectForProcessing() } + public func selectPendingCount() -> Int { + return syncStatusTable.selectPendingCount() + } + public func resetSelectedForProcessing(_ articleIDs: [String]) { syncStatusTable.resetSelectedForProcessing(articleIDs) } diff --git a/Frameworks/SyncDatabase/SyncStatusTable.swift b/Frameworks/SyncDatabase/SyncStatusTable.swift index cef4c80da..63a2036fe 100644 --- a/Frameworks/SyncDatabase/SyncStatusTable.swift +++ b/Frameworks/SyncDatabase/SyncStatusTable.swift @@ -39,6 +39,23 @@ final class SyncStatusTable: DatabaseTable { } + func selectPendingCount() -> Int { + + var count: Int = 0 + + self.queue.fetchSync { (database) in + let sql = "select count(*) from syncStatus" + if let resultSet = database.executeQuery(sql, withArgumentsIn: nil) { + resultSet.next() + count = Int(resultSet.int(forColumnIndex: 0)) + } + + } + + return count + + } + func resetSelectedForProcessing(_ articleIDs: [String]) { self.queue.update { database in let parameters = articleIDs.map { $0 as AnyObject }