From 27f506c253bec522e886c494bf1e53e52b127f52 Mon Sep 17 00:00:00 2001 From: chteufleur Date: Fri, 5 Oct 2018 19:34:16 +0200 Subject: [PATCH] Remove "otherJid" when receiving unavailable presence. --- .../mytrackingdog/services/ServiceXmpp.java | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java index 01fdb31..39fc09d 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java @@ -172,22 +172,28 @@ public class ServiceXmpp extends Observable implements PresenceEventListener { } @Override - public void presenceAvailable(FullJid address, Presence availablePresence) { + public void presenceAvailable(FullJid address, Presence presence) { String fullJid = address.asFullJidIfPossible().toString(); - if (!fullJid.equals(jid) && (otherJid == null || !fullJid.equals(otherJid))) { - Log.i(TAG, "PRESENCE AVAILABLE RECEIVED FROM "+fullJid); - otherJid = fullJid; - try { - sendPresenceAvailable(fullJid); - } catch (SmackException.NotConnectedException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (XmppStringprepException e) { - e.printStackTrace(); + if (presence.getType() == Presence.Type.available) { + if (!fullJid.equals(jid) && (otherJid == null || !fullJid.equals(otherJid))) { + Log.i(TAG, "PRESENCE AVAILABLE RECEIVED FROM " + fullJid); + otherJid = fullJid; + try { + sendPresenceAvailable(fullJid); + } catch (SmackException.NotConnectedException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (XmppStringprepException e) { + e.printStackTrace(); + } + setChanged(); + notifyObservers(new Notification(NOTIF_NEW_PRESENCE_RECEIVED).addExtra(NOTIF_NEW_PRESENCE_RECEIVED_VALUE_JID, otherJid)); + } + } else if (presence.getType() == Presence.Type.unavailable) { + if (otherJid != null && otherJid.equals(fullJid)) { + otherJid = null; } - setChanged(); - notifyObservers(new Notification(NOTIF_NEW_PRESENCE_RECEIVED).addExtra(NOTIF_NEW_PRESENCE_RECEIVED_VALUE_JID, otherJid)); } }