Anton Shestakov <av6@dwimlabs.net>, Sat, 02 Apr 2016 18:09:39 +0800
index: add a sidebar for controls (so far it's just the disconnect button)
js/xmpp.js
Permissions: -rw-r--r--
// Generated by CoffeeScript 1.10.0 var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; Tram.XMPPInterface = (function() { XMPPInterface.prototype.conn = null; function XMPPInterface() { this.onConnect = bind(this.onConnect, this); XMPPInterface.prototype._prepareConnection = function() { console.debug('connection exists, not reconnecting'); return this.conn = new Strophe.Connection("https://" + Tram.config.host + "/http-bind"); XMPPInterface.prototype.connect = function(node, pass) { this._prepareConnection(); jid = node + "@" + Tram.config.domain; return this.conn.connect(jid, pass, this.onConnect); XMPPInterface.prototype.disconnect = function(reason) { this.conn.disconnect(reason); XMPPInterface.prototype.startRegistration = function() { this._prepareConnection(); return this.conn.register.connect(Tram.config.domain, this.onConnect); XMPPInterface.prototype.register = function(username, password) { this.conn.register.fields.username = username; this.conn.register.fields.password = password; return this.conn.register.submit(); XMPPInterface.prototype.finishRegistration = function() { return this.conn.authenticate(); XMPPInterface.prototype.savevCard = function(data, okcb, failcb) { var $vcard, b, bi, binval, bl, d, dl, type; $vcard.c('NICKNAME').t(data.nickname).up(); $vcard.c('FN').t(data.fullname).up(); bi = data.avatar.indexOf(b); type = data.avatar.substr(dl, bi - dl); binval = data.avatar.substr(bi + bl); $vcard.c('PHOTO').c('TYPE').t(type).up().c('BINVAL').t(binval); return this.conn.sendIQ($vcard.tree(), okcb, failcb); XMPPInterface.prototype.onConnect = function(status, error) { case Strophe.Status.CONNECTING: console.debug('Strophe is connecting.'); return this.trigger('connecting'); case Strophe.Status.AUTHENTICATING: console.debug('Strophe is authenticating.'); return this.trigger('authenticating'); case Strophe.Status.AUTHFAIL: console.debug('Strophe failed to authenticate:', error); return this.trigger('authfail'); case Strophe.Status.ERROR: console.debug('Strophe received an error:', error); return this.trigger('error'); case Strophe.Status.CONNFAIL: console.debug('Strophe failed to connect:', error); return this.trigger('connfail'); case Strophe.Status.DISCONNECTING: console.debug('Strophe is disconnecting.'); return this.trigger('disconnecting'); case Strophe.Status.DISCONNECTED: console.debug('Strophe is disconnected.'); return this.trigger('disconnected'); case Strophe.Status.CONNECTED: console.debug('Strophe is connected.'); console.info('My jid:', this.conn.jid); return this.trigger('connected'); case Strophe.Status.ATTACHED: console.debug('Strophe is attached.'); console.info('My jid:', this.conn.jid); return this.trigger('attached'); case Strophe.Status.REGISTER: console.debug('Got registration prompt.'); return this.trigger('register'); case Strophe.Status.REGISTERED: console.debug('Registered!'); return this.trigger('registered'); case Strophe.Status.CONFLICT: console.debug('Contact already exists!'); return this.trigger('conflict'); case Strophe.Status.NOTACCEPTABLE: console.debug('Registration form not properly filled out.'); return this.trigger('notacceptable'); case Strophe.Status.REGIFAIL: console.debug('The server does not support In-Band Registration.'); return this.trigger('regifail'); _(Tram.XMPPInterface.prototype).extend(Backbone.Events); //# sourceMappingURL=xmpp.js.map