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.
coffee/register.coffee
Permissions: -rw-r--r--
window.clientState = new Tram.ClientState() window.progressApp = new Tram.ProgressApp(el: $('[data-app="progress"]'), model: clientState) class RegistrationData extends Backbone.Model validate: (attrs, options) -> @unset('username-errors') @unset('password1-errors') @unset('password2-errors') if (attrs.username ? '').trim() is '' @set('username-errors', ['This field is required.']) if (attrs.password1 ? '') is '' @set('password1-errors', ['This field is required.']) if (attrs.password1 ? '') isnt (attrs.password2 ? '') @set('password2-errors', ['Passwords must match.']) else if (attrs.password2 ? '') is '' @set('password2-errors', ['This field is required.']) return @has('username-errors') or @has('password1-errors') or @has('password2-errors') class ProfileData extends Backbone.Model window.regData = new RegistrationData() window.vcData = new ProfileData() clientState.set('progress', 0) X.register(regData.get('username').trim(), regData.get('password1')) 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') clientState.unset('progress') console.warn('vcard is NOT set!', arguments) $('[data-msg="save-failed"]').removeClass('uk-hidden') file = $('#avatar').get(0).files[0] reader = new FileReader() _(data).extend(avatar: reader.result) clientState.set('progress', 0) X.savevCard(data, okcb, failcb) reader.readAsDataURL(file) clientState.set('progress', 0) X.savevCard(data, okcb, failcb) window.regRivet = rivets.bind($('[data-form="registration"]'), data: regData, register: registerfn) window.vcRivet = rivets.bind($('[data-form="vcard"]'), data: vcData, save: savefn, cancel: cancelfn) window.X = new Tram.XMPPInterface() $('[data-step="registration"]').removeClass('uk-hidden') $('[data-step="registration"]').addClass('uk-hidden') $('[data-msg="registration-closed"]').removeClass('uk-hidden') regData.set('username-errors', ['A user with this username already exists.']) $('[data-msg="registration-failed"]').removeClass('uk-hidden') vcData.set('nickname', regData.get('username').trim()) $('[data-step="vcard"]').removeClass('uk-hidden') X.on 'status', (status) -> when Strophe.Status.REGISTERED clientState.set('progress', 50) when Strophe.Status.CONNECTED clientState.set('progress', 100) clientState.unset('progress') $('[data-form="registration"], [data-form="vcard"]').each -> $form.find('input').on 'keydown', (e) -> if (not @required or @value isnt '') and e.keyCode is 13 index = $form.find('input').index(@) $next = $form.find('input').eq(index + 1) $form.find('button').trigger('click')