From 8f92d8d109e2d62816c5d3fe1b9d21ab4802ccc8 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 20 May 2014 10:48:07 +0200 Subject: [PATCH] ported pending subscription support to new roster mgmt --- .../siacs/conversations/entities/Contact.java | 1 + .../services/XmppConnectionService.java | 19 +++---------------- .../conversations/xmpp/XmppConnection.java | 13 +------------ 3 files changed, 5 insertions(+), 28 deletions(-) diff --git a/src/eu/siacs/conversations/entities/Contact.java b/src/eu/siacs/conversations/entities/Contact.java index ff1459a50..22e2661bf 100644 --- a/src/eu/siacs/conversations/entities/Contact.java +++ b/src/eu/siacs/conversations/entities/Contact.java @@ -286,5 +286,6 @@ public class Contact { public static final int ASKING = 2; public static final int PREEMPTIVE_GRANT = 4; public static final int IN_ROSTER = 8; + public static final int PENDING_SUBSCRIPTION_REQUEST = 16; } } diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java index 35e5fb514..9ea7f2b1f 100644 --- a/src/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/eu/siacs/conversations/services/XmppConnectionService.java @@ -303,12 +303,6 @@ public class XmppConnectionService extends Service { } else { Contact contact = account.getRoster().getContact( packet.getFrom()); - /* - * if (contact == null) { if ("subscribe".equals(type)) { - * account.getXmppConnection().addPendingSubscription( - * fromParts[0]); } else { // Log.d(LOGTAG,packet.getFrom()+ - * // " could not be found"); } return; } - */ if (type == null) { if (fromParts.length == 2) { contact.updatePresence(fromParts[1], Presences @@ -327,12 +321,6 @@ public class XmppConnectionService extends Service { } contact.setPgpKeyId(pgp.fetchKeyId(account, msg, x.getContent())); - Log.d("xmppService", - account.getJid() - + ": fetched key id for " - + contact.getJid() - + " was:" - + contact.getPgpKeyId()); } } } else { @@ -357,8 +345,7 @@ public class XmppConnectionService extends Service { requestPresenceUpdatesFrom(contact); } } else { - account.getXmppConnection().addPendingSubscription( - fromParts[0]); + contact.setOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST); } } else { // Log.d(LOGTAG, packet.toString()); @@ -1198,8 +1185,7 @@ public class XmppConnectionService extends Service { pushContactToServer(contact); if (autoGrant) { requestPresenceUpdatesFrom(contact); - if (contact.getAccount().getXmppConnection().hasPendingSubscription( - contact.getJid())) { + if (contact.getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST)) { Log.d("xmppService", "contact had pending subscription"); sendPresenceUpdatesTo(contact); } @@ -1260,6 +1246,7 @@ public class XmppConnectionService extends Service { packet.setAttribute("from", contact.getAccount().getJid()); Log.d(LOGTAG, packet.toString()); contact.getAccount().getXmppConnection().sendPresencePacket(packet); + contact.resetOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST); } public void sendPresence(Account account) { diff --git a/src/eu/siacs/conversations/xmpp/XmppConnection.java b/src/eu/siacs/conversations/xmpp/XmppConnection.java index 58e110d6d..23613cd5b 100644 --- a/src/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/eu/siacs/conversations/xmpp/XmppConnection.java @@ -74,9 +74,7 @@ public class XmppConnection implements Runnable { private boolean shouldAuthenticate = true; private Element streamFeatures; private HashMap> disco = new HashMap>(); - - private HashSet pendingSubscriptions = new HashSet(); - + private String streamId = null; private int smVersion = 3; @@ -904,15 +902,6 @@ public class XmppConnection implements Runnable { return findDiscoItemByFeature("http://jabber.org/protocol/muc"); } - public boolean hasPendingSubscription(String jid) { - return this.pendingSubscriptions.contains(jid); - } - - public void addPendingSubscription(String jid) { - Log.d(LOGTAG,"adding "+jid+" to pending subscriptions"); - this.pendingSubscriptions.add(jid); - } - public int getTimeToNextAttempt() { int interval = (int) (25 * Math.pow(1.5,attempt)); int secondsSinceLast = (int) ((SystemClock.elapsedRealtime() - this.lastConnect) / 1000);