12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.xmpp.PresenceService"]){dojo._hasResource["dojox.xmpp.PresenceService"]=true;dojo.provide("dojox.xmpp.PresenceService");dojox.xmpp.presence={UPDATE:201,SUBSCRIPTION_REQUEST:202,SUBSCRIPTION_SUBSTATUS_NONE:204,SUBSCRIPTION_NONE:"none",SUBSCRIPTION_FROM:"from",SUBSCRIPTION_TO:"to",SUBSCRIPTION_BOTH:"both",SUBSCRIPTION_REQUEST_PENDING:"pending",STATUS_ONLINE:"online",STATUS_AWAY:"away",STATUS_CHAT:"chat",STATUS_DND:"dnd",STATUS_EXTENDED_AWAY:"xa",STATUS_OFFLINE:"offline",STATUS_INVISIBLE:"invisible"};dojo.declare("dojox.xmpp.PresenceService",null,{constructor:function(_1){this.session=_1;this.isInvisible=false;this.avatarHash=null;this.presence=null;this.restrictedContactjids={};},publish:function(_2){this.presence=_2;this._setPresence();},sendAvatarHash:function(_3){this.avatarHash=_3;this._setPresence();},_setPresence:function(){var _4=this.presence;var p={xmlns:"jabber:client"};if(_4&&_4.to){p.to=_4.to;}if(_4.show&&_4.show==dojox.xmpp.presence.STATUS_OFFLINE){p.type="unavailable";}if(_4.show&&_4.show==dojox.xmpp.presence.STATUS_INVISIBLE){this._setInvisible();this.isInvisible=true;return;}if(this.isInvisible){this._setVisible();}var _5=new dojox.string.Builder(dojox.xmpp.util.createElement("presence",p,false));if(_4.show&&_4.show!=dojox.xmpp.presence.STATUS_OFFLINE){_5.append(dojox.xmpp.util.createElement("show",{},false));_5.append(_4.show);_5.append("</show>");}if(_4.status){_5.append(dojox.xmpp.util.createElement("status",{},false));_5.append(_4.status);_5.append("</status>");}if(this.avatarHash){_5.append(dojox.xmpp.util.createElement("x",{xmlns:"vcard-temp:x:update"},false));_5.append(dojox.xmpp.util.createElement("photo",{},false));_5.append(this.avatarHash);_5.append("</photo>");_5.append("</x>");}if(_4.priority&&_4.show!=dojox.xmpp.presence.STATUS_OFFLINE){if(_4.priority>127||_4.priority<-128){_4.priority=5;}_5.append(dojox.xmpp.util.createElement("priority",{},false));_5.append(_4.priority);_5.append("</priority>");}_5.append("</presence>");this.session.dispatchPacket(_5.toString());},toggleBlockContact:function(_6){if(!this.restrictedContactjids[_6]){this.restrictedContactjids[_6]=this._createRestrictedJid();}this.restrictedContactjids[_6].blocked=!this.restrictedContactjids[_6].blocked;this._updateRestricted();return this.restrictedContactjids;},toggleContactInvisiblity:function(_7){if(!this.restrictedContactjids[_7]){this.restrictedContactjids[_7]=this._createRestrictedJid();}this.restrictedContactjids[_7].invisible=!this.restrictedContactjids[_7].invisible;this._updateRestricted();return this.restrictedContactjids;},_createRestrictedJid:function(){return {invisible:false,blocked:false};},_updateRestricted:function(){var _8={id:this.session.getNextIqId(),from:this.session.jid+"/"+this.session.resource,type:"set"};var _9=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",_8,false));_9.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:privacy"},false));_9.append(dojox.xmpp.util.createElement("list",{name:"iwcRestrictedContacts"},false));var _a=1;for(var _b in this.restrictedContactjids){var _c=this.restrictedContactjids[_b];if(_c.blocked||_c.invisible){_9.append(dojox.xmpp.util.createElement("item",{value:dojox.xmpp.util.encodeJid(_b),action:"deny",order:_a++},false));if(_c.blocked){_9.append(dojox.xmpp.util.createElement("message",{},true));}if(_c.invisible){_9.append(dojox.xmpp.util.createElement("presence-out",{},true));}_9.append("</item>");}else{delete this.restrictedContactjids[_b];}}_9.append("</list>");_9.append("</query>");_9.append("</iq>");var _d=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",_8,false));_d.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:privacy"},false));_d.append(dojox.xmpp.util.createElement("active",{name:"iwcRestrictedContacts"},true));_d.append("</query>");_d.append("</iq>");this.session.dispatchPacket(_9.toString());this.session.dispatchPacket(_d.toString());},_setVisible:function(){var _e={id:this.session.getNextIqId(),from:this.session.jid+"/"+this.session.resource,type:"set"};var _f=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",_e,false));_f.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:privacy"},false));_f.append(dojox.xmpp.util.createElement("active",{},true));_f.append("</query>");_f.append("</iq>");this.session.dispatchPacket(_f.toString());},_setInvisible:function(){var _10={id:this.session.getNextIqId(),from:this.session.jid+"/"+this.session.resource,type:"set"};var req=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",_10,false));req.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:privacy"},false));req.append(dojox.xmpp.util.createElement("list",{name:"invisible"},false));req.append(dojox.xmpp.util.createElement("item",{action:"deny",order:"1"},false));req.append(dojox.xmpp.util.createElement("presence-out",{},true));req.append("</item>");req.append("</list>");req.append("</query>");req.append("</iq>");_10={id:this.session.getNextIqId(),from:this.session.jid+"/"+this.session.resource,type:"set"};var _11=new dojox.string.Builder(dojox.xmpp.util.createElement("iq",_10,false));_11.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:privacy"},false));_11.append(dojox.xmpp.util.createElement("active",{name:"invisible"},true));_11.append("</query>");_11.append("</iq>");this.session.dispatchPacket(req.toString());this.session.dispatchPacket(_11.toString());},_manageSubscriptions:function(_12,_13){if(!_12){return;}if(_12.indexOf("@")==-1){_12+="@"+this.session.domain;}var req=dojox.xmpp.util.createElement("presence",{to:_12,type:_13},true);this.session.dispatchPacket(req);},subscribe:function(_14){this._manageSubscriptions(_14,"subscribe");},approveSubscription:function(_15){this._manageSubscriptions(_15,"subscribed");},unsubscribe:function(_16){this._manageSubscriptions(_16,"unsubscribe");},declineSubscription:function(_17){this._manageSubscriptions(_17,"unsubscribed");},cancelSubscription:function(_18){this._manageSubscriptions(_18,"unsubscribed");}});}
|