You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2010/08/08 13:59:18 UTC

svn commit: r983391 - /mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/examples/client/client.js

Author: ngn
Date: Sun Aug  8 11:59:18 2010
New Revision: 983391

URL: http://svn.apache.org/viewvc?rev=983391&view=rev
Log:
Fixing presence loop bug (VYSPER-229, by Bogdan Pistol)

Modified:
    mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/examples/client/client.js

Modified: mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/examples/client/client.js
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/examples/client/client.js?rev=983391&r1=983390&r2=983391&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/examples/client/client.js (original)
+++ mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/examples/client/client.js Sun Aug  8 11:59:18 2010
@@ -23,7 +23,6 @@ var port;
 var jid;
 var password;
 var connection;
-var subscribeRequests = [];
 var isDisconnecting = false;
 
 var connectionStatuses = {};
@@ -60,15 +59,6 @@ $(document).ready(function() {
 	});
 });
 
-function getSubscribeRequest(jid) {
-    for (var i = 0; i < subscribeRequests.length; i++) {
-        if (jid === subscribeRequests[i]) {
-            return i;
-        }
-    }
-    return -1;
-}
-
 function formatTime(val) {
 	return val < 10 ? "0" + val : val;
 }
@@ -217,12 +207,16 @@ function presenceReceived(presence) {
 			connection.send(pres);
 		}
 	} else if (bareFromJid !== jid) {
-		$("#roster > div[jid=" + id + "]").text(bareFromJid + " (" + (type === "unavailable" ? "offline" : "online") + ")");
-		if (getSubscribeRequest(bareFromJid) === -1) {
-			log("Sending presence", $pres().toString());
-			connection.send($pres());
-		} else {
-			subscribeRequests.splice(getSubscribeRequest(bareFromJid), 1);
+		var contact = $("#roster > div[jid=" + id + "]");
+		if (contact.length === 1) {
+			var isOnline = contact.text().match(/.+\(online\)/);
+			if (isOnline && type === "unavailable") {
+				contact.text(bareFromJid + " (offline)");
+			} else if (!isOnline && type !== "unavailable") {
+				contact.text(bareFromJid + " (online)");
+				log("Sending presence", $pres().toString());
+				connection.send($pres());
+			}
 		}
 	}
 	return true;
@@ -243,7 +237,6 @@ function addContact() {
 		return;
 	}
 	$("#roster").append("<div jid='" + jid2id(toJid) + "'>" + toJid + " (offline)</div>");
-	subscribeRequests.push(toJid);
 	var pres = $pres({to: toJid, type: "subscribe"});
 	log("Requesting subscribe to " + toJid, pres.toString());
 	connection.send(pres);