Refactored conflicted name checking so it can be used in more places

This commit is contained in:
Ruben Vereecken 2014-07-13 17:06:04 +02:00
parent 252edef9e5
commit 0be03aa1fe
3 changed files with 17 additions and 13 deletions

View file

@ -68,6 +68,13 @@ module.exports = class User extends CocoModel
cache[idOrSlug] = user
user
@getUnconflictedName: (name, done) ->
$.ajax "/auth/name/#{name}",
success: (data) -> done data.name
statusCode: 409: (data) ->
response = JSON.parse data.responseText
done response.name
getEnabledEmails: ->
@migrateEmails()
emails = _.clone(@get('emails')) or {}

View file

@ -63,16 +63,13 @@ module.exports = class SettingsView extends View
checkNameExists: =>
name = $('#name').val()
console.debug 'about to check for ' + name
$.ajax "/auth/name/#{name}",
success: (data) =>
forms.clearFormAlerts(@$el)
User.getUnconflictedName name, (newName) =>
forms.clearFormAlerts(@$el)
if name is newName
@suggestedName = undefined
statusCode: 409: (data) =>
forms.clearFormAlerts(@$el)
response = JSON.parse data.responseText
@suggestedName = response.name
forms.setErrorToProperty @$el, 'name', "This name is already taken. What about #{response.name}?", true
else
@suggestedName = newName
forms.setErrorToProperty @$el, 'name', "This name is already taken. What about #{newName}?", true
afterRender: ->
super()

View file

@ -4,6 +4,7 @@ WizardSprite = require 'lib/surface/WizardSprite'
ThangType = require 'models/ThangType'
{me} = require 'lib/auth'
forms = require 'lib/forms'
User = require 'models/User'
module.exports = class WizardSettingsModal extends View
id: 'wizard-settings-modal'
@ -28,10 +29,9 @@ module.exports = class WizardSettingsModal extends View
checkNameExists: =>
forms.clearFormAlerts(@$el)
name = $('#wizard-settings-name').val()
$.ajax "/auth/name/#{name}",
success: (data) =>
forms.clearFormAlerts(@$el)
statusCode: 409: (data) =>
User.getUnconflictedName name, (newName) =>
forms.clearFormAlerts(@$el)
if name isnt newName
forms.setErrorToProperty @$el, 'name', 'This name is already taken so you won\'t be able to keep it.', true
onWizardSettingsDone: ->