Fix promise deallocations

pull/355/head
nielsandriesse 4 years ago
parent 9cda22b640
commit 5d74bf1cca

@ -79,6 +79,7 @@ public final class ClosedGroupPoller : NSObject {
promise.catch2 { error in promise.catch2 { error in
SNLog("Polling failed for closed group with public key: \(publicKey) due to error: \(error).") SNLog("Polling failed for closed group with public key: \(publicKey) due to error: \(error).")
} }
promise.retainUntilComplete()
return promise.map { _ in } return promise.map { _ in }
} }
} }

@ -69,7 +69,6 @@ public final class OpenGroupPoller : NSObject {
guard !self.isPolling else { return Promise.value(()) } guard !self.isPolling else { return Promise.value(()) }
self.isPolling = true self.isPolling = true
let openGroup = self.openGroup let openGroup = self.openGroup
let userPublicKey = getUserHexEncodedPublicKey()
let (promise, seal) = Promise<Void>.pending() let (promise, seal) = Promise<Void>.pending()
promise.retainUntilComplete() promise.retainUntilComplete()
OpenGroupAPI.getMessages(for: openGroup.channel, on: openGroup.server).done(on: DispatchQueue.global(qos: .default)) { messages in OpenGroupAPI.getMessages(for: openGroup.channel, on: openGroup.server).done(on: DispatchQueue.global(qos: .default)) { messages in
@ -177,13 +176,13 @@ public final class OpenGroupPoller : NSObject {
} }
}.catch(on: DispatchQueue.global(qos: .userInitiated)) { _ in }.catch(on: DispatchQueue.global(qos: .userInitiated)) { _ in
seal.fulfill(()) // The promise is just used to keep track of when we're done seal.fulfill(()) // The promise is just used to keep track of when we're done
} }.retainUntilComplete()
return promise return promise
} }
private func pollForDeletedMessages() { private func pollForDeletedMessages() {
let openGroup = self.openGroup let openGroup = self.openGroup
let _ = OpenGroupAPI.getDeletedMessageServerIDs(for: openGroup.channel, on: openGroup.server).done(on: DispatchQueue.global(qos: .default)) { deletedMessageServerIDs in OpenGroupAPI.getDeletedMessageServerIDs(for: openGroup.channel, on: openGroup.server).done(on: DispatchQueue.global(qos: .default)) { deletedMessageServerIDs in
let deletedMessageIDs = deletedMessageServerIDs.compactMap { Storage.shared.getIDForMessage(withServerID: UInt64($0)) } let deletedMessageIDs = deletedMessageServerIDs.compactMap { Storage.shared.getIDForMessage(withServerID: UInt64($0)) }
SNMessagingKitConfiguration.shared.storage.write { transaction in SNMessagingKitConfiguration.shared.storage.write { transaction in
deletedMessageIDs.forEach { messageID in deletedMessageIDs.forEach { messageID in
@ -191,10 +190,10 @@ public final class OpenGroupPoller : NSObject {
TSMessage.fetch(uniqueId: messageID, transaction: transaction)?.remove(with: transaction) TSMessage.fetch(uniqueId: messageID, transaction: transaction)?.remove(with: transaction)
} }
} }
} }.retainUntilComplete()
} }
private func pollForModerators() { private func pollForModerators() {
let _ = OpenGroupAPI.getModerators(for: openGroup.channel, on: openGroup.server) OpenGroupAPI.getModerators(for: openGroup.channel, on: openGroup.server).retainUntilComplete()
} }
} }

Loading…
Cancel
Save