112:f4a4878c99a3
Anton Shestakov <av6@dwimlabs.net>, Thu, 07 Apr 2016 22:56:16 +0800
index: check if roster has the item before removing it Sometimes we get events from contacts that are not in user's roster, trying to remove such contacts used to fail before this patch.

next change 118:f7022798c64a
previous change 46:e3696f4866fc

coffee/register.coffee

Permissions: -rw-r--r--

Other formats: Feeds:
class RegistrationData extends Backbone.Model
defaults:
username: ''
password1: ''
password2: ''
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
defaults:
fullname: ''
nickname: ''
avatar: ''
window.regData = new RegistrationData()
window.vcData = new ProfileData()
registerfn = ->
if regData.isValid()
X.register(regData.get('username').trim(), regData.get('password1'))
savefn = ->
data =
fullname: vcData.get('fullname').trim()
nickname: vcData.get('nickname').trim()
okcb = ->
console.debug('vcard is set!', arguments)
$('[data-step="vcard"]').addClass('uk-hidden')
location.href = '/'
failcb = ->
console.warn('vcard is NOT set!', arguments)
$('[data-msg="save-failed"]').removeClass('uk-hidden')
file = $('#avatar').get(0).files[0]
if file?
reader = new FileReader()
reader.onloadend = ->
_(data).extend(avatar: reader.result)
X.savevCard(data, okcb, failcb)
reader.readAsDataURL(file)
else
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)
window.X = new Tram.XMPPInterface()
X.on 'register', ->
$('[data-step="registration"]').removeClass('uk-hidden')
X.on 'registered', ->
X.finishRegistration()
$('[data-step="registration"]').addClass('uk-hidden')
X.on 'regifail', ->
$('[data-msg="registration-closed"]').removeClass('uk-hidden')
X.on 'conflict', ->
regData.set('username-errors', ['A user with this username already exists.'])
X.on 'notacceptable', ->
$('[data-msg="registration-failed"]').removeClass('uk-hidden')
X.on 'connected', ->
vcData.set('nickname', regData.get('username').trim())
$('[data-step="vcard"]').removeClass('uk-hidden')
$('#fullname').focus()
X.startRegistration()
$('[data-form="registration"], [data-form="vcard"]').each ->
$form = $(@)
$form.find('input').on 'keydown', (e) ->
if (not @required or @value isnt '') and e.keyCode is 13
e.preventDefault()
index = $form.find('input').index(@)
$next = $form.find('input').eq(index + 1)
if $next.length isnt 0
$next.focus()
else
$form.find('button').trigger('click')