Continue converting ArticlesDatabase to async/await.

This commit is contained in:
Brent Simmons
2023-10-04 21:35:57 -07:00
parent 61061fdd6b
commit 0c879a319a
2 changed files with 12 additions and 13 deletions

View File

@@ -249,8 +249,8 @@ public typealias ArticleStatusesResultBlock = (ArticleStatusesResult) -> Void
/// Create statuses for specified articleIDs. For existing statuses, dont do anything.
/// For newly-created statuses, mark them as read and not-starred.
public func createStatusesIfNeeded(articleIDs: Set<String>, completion: @escaping DatabaseCompletionBlock) {
articlesTable.createStatusesIfNeeded(articleIDs, completion)
public func createStatusesIfNeeded(articleIDs: Set<String>) async throws {
try await articlesTable.createStatusesIfNeeded(articleIDs)
}
#if os(iOS)

View File

@@ -590,17 +590,16 @@ final class ArticlesTable: DatabaseTable {
}
}
func createStatusesIfNeeded(_ articleIDs: Set<String>, _ completion: @escaping DatabaseCompletionBlock) {
queue.runInTransaction { databaseResult in
switch databaseResult {
case .success(let database):
let _ = self.statusesTable.ensureStatusesForArticleIDs(articleIDs, true, database)
DispatchQueue.main.async {
completion(nil)
}
case .failure(let databaseError):
DispatchQueue.main.async {
completion(databaseError)
func createStatusesIfNeeded(_ articleIDs: Set<String>) async throws {
try await withCheckedThrowingContinuation { continuation in
queue.runInTransaction { databaseResult in
switch databaseResult {
case .success(let database):
let _ = self.statusesTable.ensureStatusesForArticleIDs(articleIDs, true, database)
continuation.resume(returning: nil)
case .failure(let databaseError):
continuation.resume(throwing: databaseError)
}
}
}