don't parse body from muc status messages
This commit is contained in:
		
							parent
							
								
									46595b6d43
								
							
						
					
					
						commit
						0d01e51da5
					
				| 
						 | 
					@ -233,13 +233,15 @@ public class MessageParser extends AbstractParser implements
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		final String body = packet.getBody();
 | 
							final String body = packet.getBody();
 | 
				
			||||||
		final String encrypted = packet.findChildContent("x", "jabber:x:encrypted");
 | 
							final String encrypted = packet.findChildContent("x", "jabber:x:encrypted");
 | 
				
			||||||
 | 
							final Element mucUserElement = packet.findChild("x","http://jabber.org/protocol/muc#user");
 | 
				
			||||||
		int status;
 | 
							int status;
 | 
				
			||||||
		final Jid counterpart;
 | 
							final Jid counterpart;
 | 
				
			||||||
		final Jid to = packet.getTo();
 | 
							final Jid to = packet.getTo();
 | 
				
			||||||
		final Jid from = packet.getFrom();
 | 
							final Jid from = packet.getFrom();
 | 
				
			||||||
		final String remoteMsgId = packet.getId();
 | 
							final String remoteMsgId = packet.getId();
 | 
				
			||||||
		boolean isTypeGroupChat = packet.getType() == MessagePacket.TYPE_GROUPCHAT;
 | 
							boolean isTypeGroupChat = packet.getType() == MessagePacket.TYPE_GROUPCHAT;
 | 
				
			||||||
		boolean properlyAddressed = !to.isBareJid() || account.countPresences() == 1;
 | 
							boolean isProperlyAddressed = !to.isBareJid() || account.countPresences() == 1;
 | 
				
			||||||
 | 
							boolean isMucStatusMessage = from.isBareJid() && mucUserElement != null && mucUserElement.hasChild("status");
 | 
				
			||||||
		if (packet.fromAccount(account)) {
 | 
							if (packet.fromAccount(account)) {
 | 
				
			||||||
			status = Message.STATUS_SEND;
 | 
								status = Message.STATUS_SEND;
 | 
				
			||||||
			counterpart = to;
 | 
								counterpart = to;
 | 
				
			||||||
| 
						 | 
					@ -262,7 +264,7 @@ public class MessageParser extends AbstractParser implements
 | 
				
			||||||
			mXmppConnectionService.updateConversationUi();
 | 
								mXmppConnectionService.updateConversationUi();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (body != null || encrypted != null) {
 | 
							if ((body != null || encrypted != null) && !isMucStatusMessage) {
 | 
				
			||||||
			Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, counterpart.toBareJid(), isTypeGroupChat);
 | 
								Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, counterpart.toBareJid(), isTypeGroupChat);
 | 
				
			||||||
			if (isTypeGroupChat) {
 | 
								if (isTypeGroupChat) {
 | 
				
			||||||
				if (counterpart.getResourcepart().equals(conversation.getMucOptions().getActualNick())) {
 | 
									if (counterpart.getResourcepart().equals(conversation.getMucOptions().getActualNick())) {
 | 
				
			||||||
| 
						 | 
					@ -283,7 +285,7 @@ public class MessageParser extends AbstractParser implements
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			Message message;
 | 
								Message message;
 | 
				
			||||||
			if (body != null && body.startsWith("?OTR")) {
 | 
								if (body != null && body.startsWith("?OTR")) {
 | 
				
			||||||
				if (!isForwarded && !isTypeGroupChat && properlyAddressed) {
 | 
									if (!isForwarded && !isTypeGroupChat && isProperlyAddressed) {
 | 
				
			||||||
					message = parseOtrChat(body, from, remoteMsgId, conversation);
 | 
										message = parseOtrChat(body, from, remoteMsgId, conversation);
 | 
				
			||||||
					if (message == null) {
 | 
										if (message == null) {
 | 
				
			||||||
						return;
 | 
											return;
 | 
				
			||||||
| 
						 | 
					@ -375,9 +377,8 @@ public class MessageParser extends AbstractParser implements
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				final Element x = packet.findChild("x", "http://jabber.org/protocol/muc#user");
 | 
									if (conversation != null && isMucStatusMessage) {
 | 
				
			||||||
				if (conversation != null && x != null && from.isBareJid()) {
 | 
										for (Element child : mucUserElement.getChildren()) {
 | 
				
			||||||
					for (Element child : x.getChildren()) {
 | 
					 | 
				
			||||||
						if (child.getName().equals("status")
 | 
											if (child.getName().equals("status")
 | 
				
			||||||
								&& MucOptions.STATUS_CODE_ROOM_CONFIG_CHANGED.equals(child.getAttribute("code"))) {
 | 
													&& MucOptions.STATUS_CODE_ROOM_CONFIG_CHANGED.equals(child.getAttribute("code"))) {
 | 
				
			||||||
							mXmppConnectionService.fetchConferenceConfiguration(conversation);
 | 
												mXmppConnectionService.fetchConferenceConfiguration(conversation);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue