Fixed a crash and the SOGS deletion logic to continue to support the deprecated approach for the time being

Fixed an issue where the app could crash when entering the background during migration
Added the old 'messageServerIdsToRemove' code back for the time being to support the deprecated deletion behaviour
pull/612/head
Morgan Pretty 2 years ago
parent 3f63a44c31
commit 2025fd2638

@ -521,7 +521,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
poller.stop() poller.stop()
} }
ClosedGroupPoller.shared.stop() ClosedGroupPoller.shared.stopAllPollers()
OpenGroupManager.shared.stopPolling() OpenGroupManager.shared.stopPolling()
} }

@ -501,7 +501,7 @@ public final class OpenGroupManager: NSObject {
let sortedMessages: [OpenGroupAPI.Message] = messages let sortedMessages: [OpenGroupAPI.Message] = messages
.filter { $0.deleted != true } .filter { $0.deleted != true }
.sorted { lhs, rhs in lhs.id < rhs.id } .sorted { lhs, rhs in lhs.id < rhs.id }
let messageServerIdsToRemove: [Int64] = messages var messageServerIdsToRemove: [Int64] = messages
.filter { $0.deleted == true } .filter { $0.deleted == true }
.map { $0.id } .map { $0.id }
let seqNo: Int64? = sortedMessages.map { $0.seqNo }.max() let seqNo: Int64? = sortedMessages.map { $0.seqNo }.max()
@ -518,7 +518,11 @@ public final class OpenGroupManager: NSObject {
guard guard
let base64EncodedString: String = message.base64EncodedData, let base64EncodedString: String = message.base64EncodedData,
let data = Data(base64Encoded: base64EncodedString) let data = Data(base64Encoded: base64EncodedString)
else { return } else {
// FIXME: Once the SOGS Emoji Reacts update is live we should remove this line (deprecated by the `deleted` flag)
messageServerIdsToRemove.append(Int64(message.id))
return
}
do { do {
let processedMessage: ProcessedMessage? = try Message.processReceivedOpenGroupMessage( let processedMessage: ProcessedMessage? = try Message.processReceivedOpenGroupMessage(

@ -65,18 +65,12 @@ public final class ClosedGroupPoller {
setUpPolling(for: groupPublicKey) setUpPolling(for: groupPublicKey)
} }
@objc public func stop() { public func stopAllPollers() {
Storage.shared let pollers: [String] = Array(isPolling.wrappedValue.keys)
.read { db in
try ClosedGroup pollers.forEach { groupPublicKey in
.select(.threadId) self.stopPolling(for: groupPublicKey)
.asRequest(of: String.self) }
.fetchAll(db)
}
.defaulting(to: [])
.forEach { [weak self] groupPublicKey in
self?.stopPolling(for: groupPublicKey)
}
} }
public func stopPolling(for groupPublicKey: String) { public func stopPolling(for groupPublicKey: String) {

Loading…
Cancel
Save