fixed parsing of muc status messages in new message parser

This commit is contained in:
Daniel Gultsch 2015-06-28 20:11:28 +02:00
parent 3578263686
commit 46595b6d43
1 changed files with 18 additions and 6 deletions

View File

@ -364,8 +364,9 @@ public class MessageParser extends AbstractParser implements
mXmppConnectionService.getNotificationService().push(message); mXmppConnectionService.getNotificationService().push(message);
} }
} else { //no body } else { //no body
if (packet.hasChild("subject") && isTypeGroupChat) { if (isTypeGroupChat) {
Conversation conversation = mXmppConnectionService.find(account, from.toBareJid()); Conversation conversation = mXmppConnectionService.find(account, from.toBareJid());
if (packet.hasChild("subject")) {
if (conversation != null && conversation.getMode() == Conversation.MODE_MULTI) { if (conversation != null && conversation.getMode() == Conversation.MODE_MULTI) {
conversation.setHasMessagesLeftOnServer(conversation.countMessages() > 0); conversation.setHasMessagesLeftOnServer(conversation.countMessages() > 0);
conversation.getMucOptions().setSubject(packet.findChildContent("subject")); conversation.getMucOptions().setSubject(packet.findChildContent("subject"));
@ -373,6 +374,17 @@ public class MessageParser extends AbstractParser implements
return; return;
} }
} }
final Element x = packet.findChild("x", "http://jabber.org/protocol/muc#user");
if (conversation != null && x != null && from.isBareJid()) {
for (Element child : x.getChildren()) {
if (child.getName().equals("status")
&& MucOptions.STATUS_CODE_ROOM_CONFIG_CHANGED.equals(child.getAttribute("code"))) {
mXmppConnectionService.fetchConferenceConfiguration(conversation);
}
}
}
}
} }
Element received = packet.findChild("received", "urn:xmpp:chat-markers:0"); Element received = packet.findChild("received", "urn:xmpp:chat-markers:0");