diff --git a/SignalServiceKit/src/Loki/API/LokiAPI.swift b/SignalServiceKit/src/Loki/API/LokiAPI.swift index 126eac01b..656a9fd65 100644 --- a/SignalServiceKit/src/Loki/API/LokiAPI.swift +++ b/SignalServiceKit/src/Loki/API/LokiAPI.swift @@ -142,7 +142,7 @@ public final class LokiAPI : NSObject { destinations.append(contentsOf: slaveDestinations) seal.fulfill(destinations) } - if let transaction = transaction { + if let transaction = transaction, transaction.connection.pendingTransactionCount != 0 { getDestinationsInternal(in: transaction) } else { storage.dbReadConnection.read { transaction in diff --git a/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift b/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift index 3a021b5c4..5fc5b97b3 100644 --- a/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift +++ b/SignalServiceKit/src/Loki/API/LokiDotNetAPI.swift @@ -57,7 +57,7 @@ public class LokiDotNetAPI : NSObject { func setAuthTokenInternal(in transaction: YapDatabaseReadWriteTransaction) { transaction.setObject(newValue, forKey: server, inCollection: authTokenCollection) } - if let transaction = transaction { + if let transaction = transaction, transaction.connection.pendingTransactionCount != 0 { setAuthTokenInternal(in: transaction) } else { storage.dbReadWriteConnection.readWrite { transaction in diff --git a/SignalServiceKit/src/Loki/API/LokiFileServerAPI.swift b/SignalServiceKit/src/Loki/API/LokiFileServerAPI.swift index 586e10069..fb8a4e5dc 100644 --- a/SignalServiceKit/src/Loki/API/LokiFileServerAPI.swift +++ b/SignalServiceKit/src/Loki/API/LokiFileServerAPI.swift @@ -76,9 +76,16 @@ public final class LokiFileServerAPI : LokiDotNetAPI { } }) }.map(on: DispatchQueue.global()) { deviceLinks -> Set in - storage.dbReadWriteConnection.readWrite { transaction in + func setDeviceLinks(in transaction: YapDatabaseReadWriteTransaction) { storage.setDeviceLinks(deviceLinks, in: transaction) } + if let transaction = transaction, transaction.connection.pendingTransactionCount != 0 { + setDeviceLinks(in: transaction) + } else { + storage.dbReadWriteConnection.readWrite { transaction in + setDeviceLinks(in: transaction) + } + } return deviceLinks } }