Improves test coverage in Feedly. Adds callbacks to SyncDatabase. Content is paged from Feedly. Unread status is set before articles are ingested.

This commit is contained in:
Kiel Gillard
2019-10-19 08:21:02 +11:00
parent 6b2de18557
commit 4f70cb6040
104 changed files with 81508 additions and 976 deletions

View File

@@ -23,8 +23,8 @@ public final class SyncDatabase {
}
public func insertStatuses(_ statuses: [SyncStatus]) {
syncStatusTable.insertStatuses(statuses)
public func insertStatuses(_ statuses: [SyncStatus], completionHandler: (() -> ())? = nil) {
syncStatusTable.insertStatuses(statuses, completionHandler: completionHandler)
}
public func selectForProcessing() -> [SyncStatus] {
@@ -35,12 +35,12 @@ public final class SyncDatabase {
return syncStatusTable.selectPendingCount()
}
public func resetSelectedForProcessing(_ articleIDs: [String]) {
syncStatusTable.resetSelectedForProcessing(articleIDs)
public func resetSelectedForProcessing(_ articleIDs: [String], completionHandler: (() -> ())? = nil) {
syncStatusTable.resetSelectedForProcessing(articleIDs, completionHandler: completionHandler)
}
public func deleteSelectedForProcessing(_ articleIDs: [String]) {
syncStatusTable.deleteSelectedForProcessing(articleIDs)
public func deleteSelectedForProcessing(_ articleIDs: [String], completionHandler: (() -> ())? = nil) {
syncStatusTable.deleteSelectedForProcessing(articleIDs, completionHandler: completionHandler)
}
}

View File

@@ -56,28 +56,37 @@ final class SyncStatusTable: DatabaseTable {
}
func resetSelectedForProcessing(_ articleIDs: [String]) {
func resetSelectedForProcessing(_ articleIDs: [String], completionHandler: (() -> ())? = nil) {
self.queue.update { database in
let parameters = articleIDs.map { $0 as AnyObject }
let placeholders = NSString.rs_SQLValueList(withPlaceholders: UInt(articleIDs.count))!
let updateSQL = "update syncStatus set selected = false where articleID in \(placeholders)"
database.executeUpdate(updateSQL, withArgumentsIn: parameters)
if let handler = completionHandler {
DispatchQueue.main.async(execute: handler)
}
}
}
func deleteSelectedForProcessing(_ articleIDs: [String]) {
func deleteSelectedForProcessing(_ articleIDs: [String], completionHandler: (() -> ())? = nil) {
self.queue.update { database in
let parameters = articleIDs.map { $0 as AnyObject }
let placeholders = NSString.rs_SQLValueList(withPlaceholders: UInt(articleIDs.count))!
let deleteSQL = "delete from syncStatus where articleID in \(placeholders)"
database.executeUpdate(deleteSQL, withArgumentsIn: parameters)
if let handler = completionHandler {
DispatchQueue.main.async(execute: handler)
}
}
}
func insertStatuses(_ statuses: [SyncStatus]) {
func insertStatuses(_ statuses: [SyncStatus], completionHandler: (() -> ())? = nil) {
self.queue.update { database in
let statusArray = statuses.map { $0.databaseDictionary() }
self.insertRows(statusArray, insertType: .orReplace, in: database)
if let handler = completionHandler {
DispatchQueue.main.async(execute: handler)
}
}
}