diff --git a/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift b/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift index a1975197b..946a564d7 100644 --- a/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift +++ b/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPollerV2.swift @@ -65,17 +65,22 @@ public final class OpenGroupPollerV2 : NSObject { // Sorting the messages by server ID before importing them fixes an issue where messages that quote older messages can't find those older messages let openGroupID = "\(server).\(body.room)" let messages = body.messages.sorted { $0.serverID! < $1.serverID! } // Safe because messages with a nil serverID are filtered out - messages.forEach { message in - guard let data = Data(base64Encoded: message.base64EncodedData) else { - return SNLog("Ignoring open group message with invalid encoding.") - } - let envelope = SNProtoEnvelope.builder(type: .sessionMessage, timestamp: message.sentTimestamp) - envelope.setContent(data) - envelope.setSource(message.sender!) // Safe because messages with a nil sender are filtered out - envelope.setServerTimestamp(message.sentTimestamp) - let job = MessageReceiveJob(data: try! envelope.buildSerializedData(), openGroupMessageServerID: UInt64(message.serverID!), openGroupID: openGroupID, isBackgroundPoll: isBackgroundPoll) - storage.write { transaction in - SessionMessagingKit.JobQueue.shared.add(job, using: transaction) + storage.write { transaction in + messages.forEach { message in + guard let data = Data(base64Encoded: message.base64EncodedData) else { + return SNLog("Ignoring open group message with invalid encoding.") + } + let envelope = SNProtoEnvelope.builder(type: .sessionMessage, timestamp: message.sentTimestamp) + envelope.setContent(data) + envelope.setSource(message.sender!) // Safe because messages with a nil sender are filtered out + envelope.setServerTimestamp(message.sentTimestamp) + do { + let data = try envelope.buildSerializedData() + let (message, proto) = try MessageReceiver.parse(data, openGroupMessageServerID: UInt64(message.serverID!), isRetry: false, using: transaction) + try MessageReceiver.handle(message, associatedWithProto: proto, openGroupID: openGroupID, isBackgroundPoll: isBackgroundPoll, using: transaction) + } catch { + SNLog("Couldn't receive open group message due to error: \(error).") + } } } // - Moderators