webui-aria2/js/libs/dojox/xmpp/RosterService.js
2012-05-01 19:52:07 +08:00

204 lines
5.5 KiB
JavaScript

//>>built
define(["dijit","dojo","dojox"],function(_1,_2,_3){
_2.provide("dojox.xmpp.RosterService");
_3.xmpp.roster={ADDED:101,CHANGED:102,REMOVED:103};
_2.declare("dojox.xmpp.RosterService",null,{constructor:function(_4){
this.session=_4;
},addRosterItem:function(_5,_6,_7){
if(!_5){
throw new Error("Roster::addRosterItem() - User ID is null");
}
var _8=this.session.getNextIqId();
var _9={id:_8,from:this.session.jid+"/"+this.session.resource,type:"set"};
var _a=new _3.string.Builder(_3.xmpp.util.createElement("iq",_9,false));
_a.append(_3.xmpp.util.createElement("query",{xmlns:"jabber:iq:roster"},false));
_5=_3.xmpp.util.encodeJid(_5);
if(_5.indexOf("@")==-1){
_5=_5+"@"+this.session.domain;
}
_a.append(_3.xmpp.util.createElement("item",{jid:_5,name:_3.xmpp.util.xmlEncode(_6)},false));
if(_7){
for(var i=0;i<_7.length;i++){
_a.append("<group>");
_a.append(_7[i]);
_a.append("</group>");
}
}
_a.append("</item></query></iq>");
var _b=this.session.dispatchPacket(_a.toString(),"iq",_9.id);
_b.addCallback(this,"verifyRoster");
return _b;
},updateRosterItem:function(_c,_d,_e){
if(_c.indexOf("@")==-1){
_c+=_c+"@"+this.session.domain;
}
var _f={id:this.session.getNextIqId(),from:this.session.jid+"/"+this.session.resource,type:"set"};
var _10=new _3.string.Builder(_3.xmpp.util.createElement("iq",_f,false));
_10.append(_3.xmpp.util.createElement("query",{xmlns:"jabber:iq:roster"},false));
var i=this.session.getRosterIndex(_c);
if(i==-1){
return;
}
var _11={jid:_c};
if(_d){
_11.name=_d;
}else{
if(this.session.roster[i].name){
_11.name=this.session.roster[i].name;
}
}
if(_11.name){
_11.name=_3.xmpp.util.xmlEncode(_11.name);
}
_10.append(_3.xmpp.util.createElement("item",_11,false));
var _12=_e?_e:this.session.roster[i].groups;
if(_12){
for(var x=0;x<_12.length;x++){
_10.append("<group>");
_10.append(_12[x]);
_10.append("</group>");
}
}
_10.append("</item></query></iq>");
var def=this.session.dispatchPacket(_10.toString(),"iq",_f.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,_13){
if(!jid){
throw new Error("Roster::addRosterItemToGroup() JID is null or undefined");
}
if(!_13){
throw new Error("Roster::addRosterItemToGroup() group is null or undefined");
}
var _14=this.session.getRosterIndex(jid);
if(_14==-1){
return;
}
var _15=this.session.roster[_14];
var _16=[];
var _17=false;
for(var i=0;((_15<_15.groups.length)&&(!_17));i++){
if(_15.groups[i]!=_13){
continue;
}
_17=true;
}
if(!_17){
return this.updateRosterItem(jid,_15.name,_15.groups.concat(_13),_14);
}
return _3.xmpp.xmpp.INVALID_ID;
},removeRosterGroup:function(_18){
var _19=this.session.roster;
for(var i=0;i<_19.length;i++){
var _1a=_19[i];
if(_1a.groups.length>0){
for(var j=0;j<_1a.groups.length;j++){
if(_1a.groups[j]==_18){
_1a.groups.splice(j,1);
this.updateRosterItem(_1a.jid,_1a.name,_1a.groups);
}
}
}
}
},renameRosterGroup:function(_1b,_1c){
var _1d=this.session.roster;
for(var i=0;i<_1d.length;i++){
var _1e=_1d[i];
if(_1e.groups.length>0){
for(var j=0;j<_1e.groups.length;j++){
if(_1e.groups[j]==_1b){
_1e.groups[j]=_1c;
this.updateRosterItem(_1e.jid,_1e.name,_1e.groups);
}
}
}
}
},removeRosterItemFromGroup:function(jid,_1f){
if(!jid){
throw new Error("Roster::addRosterItemToGroup() JID is null or undefined");
}
if(!_1f){
throw new Error("Roster::addRosterItemToGroup() group is null or undefined");
}
var _20=this.session.getRosterIndex(jid);
if(_20==-1){
return;
}
var _21=this.session.roster[_20];
var _22=false;
for(var i=0;((i<_21.groups.length)&&(!_22));i++){
if(_21.groups[i]!=_1f){
continue;
}
_22=true;
_20=i;
}
if(_22==true){
_21.groups.splice(_20,1);
return this.updateRosterItem(jid,_21.name,_21.groups);
}
return _3.xmpp.xmpp.INVALID_ID;
},rosterItemRenameGroup:function(jid,_23,_24){
if(!jid){
throw new Error("Roster::rosterItemRenameGroup() JID is null or undefined");
}
if(!_24){
throw new Error("Roster::rosterItemRenameGroup() group is null or undefined");
}
var _25=this.session.getRosterIndex(jid);
if(_25==-1){
return;
}
var _26=this.session.roster[_25];
var _27=false;
for(var i=0;((i<_26.groups.length)&&(!_27));i++){
if(_26.groups[i]==_23){
_26.groups[i]=_24;
_27=true;
}
}
if(_27==true){
return this.updateRosterItem(jid,_26.name,_26.groups);
}
return _3.xmpp.xmpp.INVALID_ID;
},renameRosterItem:function(jid,_28){
if(!jid){
throw new Error("Roster::addRosterItemToGroup() JID is null or undefined");
}
if(!_28){
throw new Error("Roster::addRosterItemToGroup() New Name is null or undefined");
}
var _29=this.session.getRosterIndex(jid);
if(_29==-1){
return;
}
return this.updateRosterItem(jid,_28,this.session.roster.groups,_29);
},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 _2a=new _3.string.Builder(_3.xmpp.util.createElement("iq",req,false));
_2a.append(_3.xmpp.util.createElement("query",{xmlns:"jabber:iq:roster"},false));
if(jid.indexOf("@")==-1){
jid+=jid+"@"+this.session.domain;
}
_2a.append(_3.xmpp.util.createElement("item",{jid:jid,subscription:"remove"},true));
_2a.append("</query></iq>");
var def=this.session.dispatchPacket(_2a.toString(),"iq",req.id);
def.addCallback(this,"verifyRoster");
return def;
},getAvatar:function(jid){
},publishAvatar:function(_2b,_2c){
},onVerifyRoster:function(id){
},onVerifyRosterFailed:function(err){
}});
});