Revision db87105c

View differences:

ChatSecure/Classes/Controllers/XMPP/Storage/MessageStorage.swift
132 132
                                        delayed: Date?,
133 133
                                        isIncoming: Bool,
134 134
                                        preSave: PreSave? = nil ) {
135
        guard !xmppMessage.isErrorMessage else {
135
        guard !xmppMessage.isErrorMessage,
136
            !xmppMessage.containsGroupChatElements else {
136 137
            DDLogWarn("Discarding forwarded message: \(xmppMessage)")
137 138
            return
138 139
        }
......
297 298
    public func xmppStream(_ sender: XMPPStream, didReceive message: XMPPMessage) {
298 299
        // We don't handle incoming group chat messages here
299 300
        // Check out OTRXMPPRoomYapStorage instead
300
        guard message.messageType != .groupchat,
301
            message.element(forName: "x", xmlns: XMPPMUCUserNamespace) == nil,
302
            message.element(forName: "x", xmlns: XMPPConferenceXmlns) == nil,
301
        guard !message.containsGroupChatElements,
303 302
            // We handle carbons elsewhere via XMPPMessageCarbonsDelegate
304 303
            !message.isMessageCarbon,
305 304
            // We handle MAM elsewhere as well
......
373 372

  
374 373
// MARK: - Private Extensions
375 374

  
375
extension XMPPMessage {
376
    /// We don't want any group chat stuff ending up in here, including invites
377
    var containsGroupChatElements: Bool {
378
        let message = self
379
        guard message.messageType != .groupchat,
380
        message.element(forName: "x", xmlns: XMPPMUCUserNamespace) == nil,
381
            message.element(forName: "x", xmlns: XMPPConferenceXmlns) == nil else {
382
                return true
383
        }
384
        return false
385
    }
386
}
376 387

  
377 388
extension OTRChatState {
378 389
    static func chatState(from fromState: XMPPMessage.ChatState?) -> OTRChatState {

Also available in: Unified diff