Anton Shestakov <av6@dwimlabs.net>, Thu, 14 Apr 2016 02:05:24 +0800
index: remove offline contacts only when they change to being offline
Since new contacts are currently added while they still have the default
presence of 'unavailable', add event sees them as offline and throws them away
immediately, before their presence could change to something else.
js/register.js
Permissions: -rw-r--r--
// Generated by CoffeeScript 1.10.0 var ProfileData, RegistrationData, cancelfn, registerfn, savefn, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; window.clientState = new Tram.ClientState(); window.progressApp = new Tram.ProgressApp({ el: $('[data-app="progress"]'), RegistrationData = (function(superClass) { extend(RegistrationData, superClass); function RegistrationData() { return RegistrationData.__super__.constructor.apply(this, arguments); RegistrationData.prototype.defaults = { RegistrationData.prototype.validate = function(attrs, options) { var ref, ref1, ref2, ref3, ref4; this.unset('username-errors'); this.unset('password1-errors'); this.unset('password2-errors'); if (((ref = attrs.username) != null ? ref : '').trim() === '') { this.set('username-errors', ['This field is required.']); if (((ref1 = attrs.password1) != null ? ref1 : '') === '') { this.set('password1-errors', ['This field is required.']); if (((ref2 = attrs.password1) != null ? ref2 : '') !== ((ref3 = attrs.password2) != null ? ref3 : '')) { this.set('password2-errors', ['Passwords must match.']); } else if (((ref4 = attrs.password2) != null ? ref4 : '') === '') { this.set('password2-errors', ['This field is required.']); return this.has('username-errors') || this.has('password1-errors') || this.has('password2-errors'); ProfileData = (function(superClass) { extend(ProfileData, superClass); return ProfileData.__super__.constructor.apply(this, arguments); ProfileData.prototype.defaults = { window.regData = new RegistrationData(); window.vcData = new ProfileData(); registerfn = function() { clientState.set('progress', 0); return X.register(regData.get('username').trim(), regData.get('password1')); var data, failcb, file, okcb, reader; fullname: vcData.get('fullname').trim(), nickname: vcData.get('nickname').trim() clientState.set('progress', 100); console.debug('vcard is set!', arguments); $('[data-step="vcard"]').addClass('uk-hidden'); return location.href = '/'; clientState.unset('progress'); console.warn('vcard is NOT set!', arguments); return $('[data-msg="save-failed"]').removeClass('uk-hidden'); file = $('#avatar').get(0).files[0]; reader = new FileReader(); reader.onloadend = function() { clientState.set('progress', 0); return X.savevCard(data, okcb, failcb); return reader.readAsDataURL(file); clientState.set('progress', 0); return X.savevCard(data, okcb, failcb); window.regRivet = rivets.bind($('[data-form="registration"]'), { window.vcRivet = rivets.bind($('[data-form="vcard"]'), { window.X = new Tram.XMPPInterface(); X.on('register', function() { return $('[data-step="registration"]').removeClass('uk-hidden'); X.on('registered', function() { return $('[data-step="registration"]').addClass('uk-hidden'); X.on('regifail', function() { return $('[data-msg="registration-closed"]').removeClass('uk-hidden'); X.on('conflict', function() { return regData.set('username-errors', ['A user with this username already exists.']); X.on('notacceptable', function() { return $('[data-msg="registration-failed"]').removeClass('uk-hidden'); X.on('connected', function() { vcData.set('nickname', regData.get('username').trim()); $('[data-step="vcard"]').removeClass('uk-hidden'); return $('#fullname').focus(); X.on('disconnected', function() { return location.reload(); X.on('status', function(status) { case Strophe.Status.REGISTERED: return clientState.set('progress', 50); case Strophe.Status.CONNECTED: return clientState.set('progress', 100); return clientState.unset('progress'); $('[data-form="registration"], [data-form="vcard"]').each(function() { return $form.find('input').on('keydown', function(e) { if ((!this.required || this.value !== '') && e.keyCode === 13) { index = $form.find('input').index(this); $next = $form.find('input').eq(index + 1); if ($next.length !== 0) { return $form.find('button').trigger('click'); //# sourceMappingURL=register.js.map