diff options
Diffstat (limited to 'src/main/java/eu/siacs/conversations/parser/PresenceParser.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/parser/PresenceParser.java | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java index 5a25b2835..2e706ff79 100644 --- a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java +++ b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java @@ -170,7 +170,7 @@ public class PresenceParser extends AbstractParser implements final String type = packet.getAttribute("type"); final Contact contact = account.getRoster().getContact(from); if (type == null) { - final String presence = from.isBareJid() ? "" : from.getResourcepart(); + final String resource = from.isBareJid() ? "" : from.getResourcepart(); contact.setPresenceName(packet.findChildContent("nick", "http://jabber.org/protocol/nick")); Avatar avatar = Avatar.parsePresence(packet.findChild("x", "vcard-temp:x:update")); if (avatar != null && !contact.isSelf()) { @@ -187,31 +187,12 @@ public class PresenceParser extends AbstractParser implements } int sizeBefore = contact.getPresences().size(); - ServiceDiscoveryResult disco = null; - Element caps = packet.findChild("c", "http://jabber.org/protocol/caps"); - - if (caps != null) { - disco = mXmppConnectionService.databaseBackend. - findDiscoveryResult(caps.getAttribute("hash"), caps.getAttribute("ver")); - } - - if (disco != null || caps == null) { - contact.updatePresence(presence, new Presence(packet.findChild("show"), disco)); - } else { - IqPacket request = new IqPacket(IqPacket.TYPE.GET); - request.setTo(from); - request.query("http://jabber.org/protocol/disco#info"); - - mXmppConnectionService.sendIqPacket(account, request, new OnIqPacketReceived() { - @Override - public void onIqPacketReceived(Account account, IqPacket discoPacket) { - if (discoPacket.getType() == IqPacket.TYPE.RESULT) { - ServiceDiscoveryResult disco = new ServiceDiscoveryResult(discoPacket); - contact.updatePresence(presence, new Presence(packet.findChild("show"), disco)); - mXmppConnectionService.databaseBackend.insertDiscoveryResult(disco); - } - } - }); + final Element show = packet.findChild("show"); + final Element caps = packet.findChild("c", "http://jabber.org/protocol/caps"); + final Presence presence = Presence.parse(show, caps); + contact.updatePresence(resource, presence); + if (presence.hasCaps() && Config.REQUEST_DISCO) { + mXmppConnectionService.fetchCaps(account, from, presence); } PgpEngine pgp = mXmppConnectionService.getPgpEngine(); |