RosterService.js 5.5 KB

12345678
  1. /*
  2. Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.xmpp.RosterService"]){dojo._hasResource["dojox.xmpp.RosterService"]=true;dojo.provide("dojox.xmpp.RosterService");dojox.xmpp.roster={ADDED:101,CHANGED:102,REMOVED:103};dojo.declare("dojox.xmpp.RosterService",null,{constructor:function(_1){this.session=_1;},addRosterItem:function(_2,_3,_4){if(!_2){throw new Error("Roster::addRosterItem() - User ID is null");}var _5=this.session.getNextIqId();var _6={id:_5,from:this.session.jid+"/"+this.session.resource,type:"set"};var _7=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",_6,false));_7.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:roster"},false));_2=dojox.xmpp.util.encodeJid(_2);if(_2.indexOf("@")==-1){_2=_2+"@"+this.session.domain;}_7.append(dojox.xmpp.util.createElement("item",{jid:_2,name:dojox.xmpp.util.xmlEncode(_3)},false));if(_4){for(var i=0;i<_4.length;i++){_7.append("<group>");_7.append(_4[i]);_7.append("</group>");}}_7.append("</item></query></iq>");var _8=this.session.dispatchPacket(_7.toString(),"iq",_6.id);_8.addCallback(this,"verifyRoster");return _8;},updateRosterItem:function(_9,_a,_b){if(_9.indexOf("@")==-1){_9+=_9+"@"+this.session.domain;}var _c={id:this.session.getNextIqId(),from:this.session.jid+"/"+this.session.resource,type:"set"};var _d=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",_c,false));_d.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:roster"},false));var i=this.session.getRosterIndex(_9);if(i==-1){return;}var _e={jid:_9};if(_a){_e.name=_a;}else{if(this.session.roster[i].name){_e.name=this.session.roster[i].name;}}if(_e.name){_e.name=dojox.xmpp.util.xmlEncode(_e.name);}_d.append(dojox.xmpp.util.createElement("item",_e,false));var _f=_b?_b:this.session.roster[i].groups;if(_f){for(var x=0;x<_f.length;x++){_d.append("<group>");_d.append(_f[x]);_d.append("</group>");}}_d.append("</item></query></iq>");var def=this.session.dispatchPacket(_d.toString(),"iq",_c.id);def.addCallback(this,"verifyRoster");return def;},verifyRoster:function(res){if(res.getAttribute("type")=="result"){}else{var err=this.session.processXmppError(res);this.onAddRosterItemFailed(err);}return res;},addRosterItemToGroup:function(jid,_10){if(!jid){throw new Error("Roster::addRosterItemToGroup() JID is null or undefined");}if(!_10){throw new Error("Roster::addRosterItemToGroup() group is null or undefined");}var _11=this.session.getRosterIndex(jid);if(_11==-1){return;}var _12=this.session.roster[_11];var _13=[];var _14=false;for(var i=0;((_12<_12.groups.length)&&(!_14));i++){if(_12.groups[i]!=_10){continue;}_14=true;}if(!_14){return this.updateRosterItem(jid,_12.name,_12.groups.concat(_10),_11);}return dojox.xmpp.xmpp.INVALID_ID;},removeRosterGroup:function(_15){var _16=this.session.roster;for(var i=0;i<_16.length;i++){var _17=_16[i];if(_17.groups.length>0){for(var j=0;j<_17.groups.length;j++){if(_17.groups[j]==_15){_17.groups.splice(j,1);this.updateRosterItem(_17.jid,_17.name,_17.groups);}}}}},renameRosterGroup:function(_18,_19){var _1a=this.session.roster;for(var i=0;i<_1a.length;i++){var _1b=_1a[i];if(_1b.groups.length>0){for(var j=0;j<_1b.groups.length;j++){if(_1b.groups[j]==_18){_1b.groups[j]=_19;this.updateRosterItem(_1b.jid,_1b.name,_1b.groups);}}}}},removeRosterItemFromGroup:function(jid,_1c){if(!jid){throw new Error("Roster::addRosterItemToGroup() JID is null or undefined");}if(!_1c){throw new Error("Roster::addRosterItemToGroup() group is null or undefined");}var _1d=this.session.getRosterIndex(jid);if(_1d==-1){return;}var _1e=this.session.roster[_1d];var _1f=false;for(var i=0;((i<_1e.groups.length)&&(!_1f));i++){if(_1e.groups[i]!=_1c){continue;}_1f=true;_1d=i;}if(_1f==true){_1e.groups.splice(_1d,1);return this.updateRosterItem(jid,_1e.name,_1e.groups);}return dojox.xmpp.xmpp.INVALID_ID;},rosterItemRenameGroup:function(jid,_20,_21){if(!jid){throw new Error("Roster::rosterItemRenameGroup() JID is null or undefined");}if(!_21){throw new Error("Roster::rosterItemRenameGroup() group is null or undefined");}var _22=this.session.getRosterIndex(jid);if(_22==-1){return;}var _23=this.session.roster[_22];var _24=false;for(var i=0;((i<_23.groups.length)&&(!_24));i++){if(_23.groups[i]==_20){_23.groups[i]=_21;_24=true;}}if(_24==true){return this.updateRosterItem(jid,_23.name,_23.groups);}return dojox.xmpp.xmpp.INVALID_ID;},renameRosterItem:function(jid,_25){if(!jid){throw new Error("Roster::addRosterItemToGroup() JID is null or undefined");}if(!_25){throw new Error("Roster::addRosterItemToGroup() New Name is null or undefined");}var _26=this.session.getRosterIndex(jid);if(_26==-1){return;}return this.updateRosterItem(jid,_25,this.session.roster.groups,_26);},removeRosterItem:function(jid){if(!jid){throw new Error("Roster::addRosterItemToGroup() JID is null or undefined");}var req={id:this.session.getNextIqId(),from:this.session.jid+"/"+this.session.resource,type:"set"};var _27=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",req,false));_27.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:roster"},false));if(jid.indexOf("@")==-1){jid+=jid+"@"+this.session.domain;}_27.append(dojox.xmpp.util.createElement("item",{jid:jid,subscription:"remove"},true));_27.append("</query></iq>");var def=this.session.dispatchPacket(_27.toString(),"iq",req.id);def.addCallback(this,"verifyRoster");return def;},getAvatar:function(jid){},publishAvatar:function(_28,_29){},onVerifyRoster:function(id){},onVerifyRosterFailed:function(err){}});}