diff options
author | Christian Schneppe <christian@pix-art.de> | 2017-04-16 12:14:19 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2017-04-16 12:14:19 +0200 |
commit | 45e4c115d66804d53275d9885fc2b5e64114d134 (patch) | |
tree | 733c84f4fe29f6688817ab789ceef117840928d8 /src/main/java/de/pixart/messenger/parser | |
parent | 7722e6f03c3250c46a6ff4960705b143ee1bd621 (diff) |
recognize muc self presence on nimbuzz.com
Apparently nimbuzz.com doesn't include status code 110 in muc self
presence
It does however include the full real jid in the presence’s item.
We can use that as a work around to detect a self presence.
Diffstat (limited to 'src/main/java/de/pixart/messenger/parser')
-rw-r--r-- | src/main/java/de/pixart/messenger/parser/PresenceParser.java | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/main/java/de/pixart/messenger/parser/PresenceParser.java b/src/main/java/de/pixart/messenger/parser/PresenceParser.java index f87353ac7..cabac0d0a 100644 --- a/src/main/java/de/pixart/messenger/parser/PresenceParser.java +++ b/src/main/java/de/pixart/messenger/parser/PresenceParser.java @@ -53,6 +53,7 @@ public class PresenceParser extends AbstractParser implements private void processConferencePresence(PresencePacket packet, Conversation conversation) { MucOptions mucOptions = conversation.getMucOptions(); + final Jid jid = conversation.getAccount().getJid(); final Jid from = packet.getFrom(); if (!from.isBareJid()) { final String type = packet.getAttribute("type"); @@ -65,7 +66,7 @@ public class PresenceParser extends AbstractParser implements if (item != null && !from.isBareJid()) { mucOptions.setError(MucOptions.Error.NONE); MucOptions.User user = parseItem(conversation, item, from); - if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE)) { + if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE) || (codes.isEmpty() && jid.equals(item.getAttributeAsJid("jid")))) { mucOptions.setOnline(); mucOptions.setSelf(user); if (mucOptions.onRenameListener != null) { @@ -107,10 +108,8 @@ public class PresenceParser extends AbstractParser implements } } } else if (type.equals("unavailable")) { - if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE) || - packet.getFrom().equals(mucOptions.getConversation().getJid())) { + if (codes.contains(MucOptions.STATUS_CODE_SELF_PRESENCE)) { if (codes.contains(MucOptions.STATUS_CODE_KICKED)) { - } else if (codes.contains(MucOptions.STATUS_CODE_KICKED)) { mucOptions.setError(MucOptions.Error.KICKED); } else if (codes.contains(MucOptions.STATUS_CODE_BANNED)) { mucOptions.setError(MucOptions.Error.BANNED); |