Don't unnecessarily open sync transactions
This commit is contained in:
parent
44288c45e9
commit
498f5a73b0
|
@ -520,18 +520,21 @@ public final class SnodeAPI : NSObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func removeDuplicates(from rawMessages: [JSON], associatedWith publicKey: String) -> [JSON] {
|
private static func removeDuplicates(from rawMessages: [JSON], associatedWith publicKey: String) -> [JSON] {
|
||||||
var receivedMessages = SNSnodeKitConfiguration.shared.storage.getReceivedMessages(for: publicKey)
|
let oldReceivedMessages = SNSnodeKitConfiguration.shared.storage.getReceivedMessages(for: publicKey)
|
||||||
|
var newReceivedMessages = oldReceivedMessages
|
||||||
let result = rawMessages.filter { rawMessage in
|
let result = rawMessages.filter { rawMessage in
|
||||||
guard let hash = rawMessage["hash"] as? String else {
|
guard let hash = rawMessage["hash"] as? String else {
|
||||||
SNLog("Missing hash value for message: \(rawMessage).")
|
SNLog("Missing hash value for message: \(rawMessage).")
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let isDuplicate = receivedMessages.contains(hash)
|
let isDuplicate = newReceivedMessages.contains(hash)
|
||||||
receivedMessages.insert(hash)
|
newReceivedMessages.insert(hash)
|
||||||
return !isDuplicate
|
return !isDuplicate
|
||||||
}
|
}
|
||||||
SNSnodeKitConfiguration.shared.storage.writeSync { transaction in
|
if oldReceivedMessages != newReceivedMessages {
|
||||||
SNSnodeKitConfiguration.shared.storage.setReceivedMessages(to: receivedMessages, for: publicKey, using: transaction)
|
SNSnodeKitConfiguration.shared.storage.writeSync { transaction in
|
||||||
|
SNSnodeKitConfiguration.shared.storage.setReceivedMessages(to: newReceivedMessages, for: publicKey, using: transaction)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue