From 3261f12ea716a1eae8d574248d94774d8d3a9d04 Mon Sep 17 00:00:00 2001 From: Morgan Pretty Date: Tue, 21 Jun 2022 14:13:41 +1000 Subject: [PATCH] Added a missing new function --- .../Database/GRDBStorage.swift | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/SessionUtilitiesKit/Database/GRDBStorage.swift b/SessionUtilitiesKit/Database/GRDBStorage.swift index bccd9cb6e..6d9f030dd 100644 --- a/SessionUtilitiesKit/Database/GRDBStorage.swift +++ b/SessionUtilitiesKit/Database/GRDBStorage.swift @@ -370,16 +370,28 @@ public extension GRDBStorage { } } - @discardableResult func write(updates: (Database) throws -> Promise) -> Promise { + @discardableResult func writeAsync(updates: @escaping (Database) throws -> Promise) -> Promise { guard isValid, let dbWriter: DatabaseWriter = dbWriter else { return Promise(error: StorageError.databaseInvalid) } - do { - return try dbWriter.write(updates) - } - catch { - return Promise(error: error) - } + let (promise, seal) = Promise.pending() + + dbWriter.asyncWrite( + { db in + try updates(db) + .done { result in seal.fulfill(result) } + .catch { error in seal.reject(error) } + .retainUntilComplete() + }, + completion: { _, result in + switch result { + case .failure(let error): seal.reject(error) + default: break + } + } + ) + + return promise } }