# `import Ember from 'ember'` AddSshKeyComponent = Ember.Component.extend classNames: ['form--sshkey'] classNameBindings: ['valueError:form-error'] store: Ember.inject.service() isSaving: false didInsertElement: () -> id = @get('repo.id') model = @get('store').recordForId('ssh_key', id) # TODO: this can be removed in favor of simply unloading record # once https://github.com/emberjs/data/pull/2867 # and https://github.com/emberjs/data/pull/2870 are merged if model @get('store').dematerializeRecord(model._internalModel) typeMap = @get('store').typeMapFor(model.constructor) idToRecord = typeMap.idToRecord delete idToRecord[id] model = @get('store').createRecord('ssh_key', id: id) @set('model', model) isValid: () -> if Ember.isBlank(@get('value')) this.set('valueError', 'Value can\'t be blank.') false else true reset: -> @setProperties(description: null, value: null) valueChanged: (-> this.set('valueError', false) ).observes('value') addErrorsFromResponse: (errArr) -> error = errArr[0].detail if error.code == 'not_a_private_key' this.set('valueError', 'This key is not a private key.') else if error.code == 'key_with_a_passphrase' this.set('valueError', 'The key can\'t have a passphrase.') actions: save: -> this.set('valueError', false) return if @get('isSaving') @set('isSaving', true) if @isValid() ssh_key = @get('model').setProperties( description: @get('description') value: @get('value') ) ssh_key.save().then => @set('isSaving', false) @reset() @sendAction('sshKeyAdded', ssh_key) , (error) => @set('isSaving', false) if error.errors @addErrorsFromResponse(error.errors) else @set('isSaving', false) `export default AddSshKeyComponent`