ChatService.js 3.1 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.ChatService"]){dojo._hasResource["dojox.xmpp.ChatService"]=true;dojo.provide("dojox.xmpp.ChatService");dojox.xmpp.chat={CHAT_STATE_NS:"http://jabber.org/protocol/chatstates",ACTIVE_STATE:"active",COMPOSING_STATE:"composing",INACTIVE_STATE:"inactive",PAUSED_STATE:"paused",GONE_STATE:"gone"};dojo.declare("dojox.xmpp.ChatService",null,{state:"",constructor:function(){this.state="";this.chatid=Math.round(Math.random()*1000000000000000);},recieveMessage:function(_1,_2){if(_1&&!_2){this.onNewMessage(_1);}},setSession:function(_3){this.session=_3;},setState:function(_4){if(this.state!=_4){this.state=_4;}},invite:function(_5){if(this.uid){return;}if(!_5||_5==""){throw new Error("ChatService::invite() contact is NULL");}this.uid=_5;var _6={xmlns:"jabber:client",to:this.uid,from:this.session.jid+"/"+this.session.resource,type:"chat"};var _7=new dojox.string.Builder(dojox.xmpp.util.createElement("message",_6,false));_7.append(dojox.xmpp.util.createElement("thread",{},false));_7.append(this.chatid);_7.append("</thread>");_7.append(dojox.xmpp.util.createElement("active",{xmlns:dojox.xmpp.chat.CHAT_STATE_NS},true));_7.append("</message>");this.session.dispatchPacket(_7.toString());this.onInvite(_5);this.setState(dojox.xmpp.chat.CHAT_STATE_NS);},sendMessage:function(_8){if(!this.uid){return;}if((!_8.body||_8.body=="")&&!_8.xhtml){return;}var _9={xmlns:"jabber:client",to:this.uid,from:this.session.jid+"/"+this.session.resource,type:"chat"};var _a=new dojox.string.Builder(dojox.xmpp.util.createElement("message",_9,false));var _b=dojox.xmpp.util.createElement("html",{"xmlns":dojox.xmpp.xmpp.XHTML_IM_NS},false);var _c=dojox.xmpp.util.createElement("body",{"xml:lang":this.session.lang,"xmlns":dojox.xmpp.xmpp.XHTML_BODY_NS},false)+_8.body+"</body>";var _d=dojox.xmpp.util.createElement("body",{},false)+dojox.xmpp.util.stripHtml(_8.body)+"</body>";if(_a.subject&&_a.subject!=""){_a.append(dojox.xmpp.util.createElement("subject",{},false));_a.append(_a.subject);_a.append("</subject>");}_a.append(_d);_a.append(_b);_a.append(_c);_a.append("</html>");_a.append(dojox.xmpp.util.createElement("thread",{},false));_a.append(this.chatid);_a.append("</thread>");if(this.useChatStates){_a.append(dojox.xmpp.util.createElement("active",{xmlns:dojox.xmpp.chat.CHAT_STATE_NS},true));}_a.append("</message>");this.session.dispatchPacket(_a.toString());},sendChatState:function(_e){if(!this.useChatState||this.firstMessage){return;}if(_e==this._currentState){return;}var _f={xmlns:"jabber:client",to:this.uid,from:this.session.jid+"/"+this.session.resource,type:"chat"};var _10=new dojox.string.Builder(dojox.xmpp.util.createElement("message",_f,false));_10.append(dojox.xmpp.util.createElement(_e,{xmlns:dojox.xmpp.chat.CHAT_STATE_NS},true));this._currentState=_e;_10.append("<thread>");_10.append(this.chatid);_10.append("</thread></message>");this.session.dispatchPacket(_10.toString());},onNewMessage:function(msg){},onInvite:function(_11){}});}