From cc85ee6f278793757eb0748255e89e4f56d7b8d1 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 3 Nov 2015 13:54:45 -0700 Subject: [PATCH] Using mixins on new species --- app/mixins/elevated-access.js | 14 +++++++++ app/mixins/save-model.js | 2 ++ app/pods/protected/species/new/controller.js | 30 ++++---------------- app/pods/protected/species/new/route.js | 28 ++++-------------- app/pods/protected/species/new/template.hbs | 4 +-- 5 files changed, 29 insertions(+), 49 deletions(-) diff --git a/app/mixins/elevated-access.js b/app/mixins/elevated-access.js index 15607e3..e557331 100644 --- a/app/mixins/elevated-access.js +++ b/app/mixins/elevated-access.js @@ -5,6 +5,9 @@ const { Mixin , inject: { service } } = Ember; export default Mixin.create({ currentUser: service('session-account'), + fallbackRouteBefore: null, + fallbackRouteAfter: null, + beforeModel: function(transition) { this._super(transition); this.get('currentUser.account').then((user) => { @@ -19,4 +22,15 @@ export default Mixin.create({ this.transitionTo(this.get('fallbackRouteAfter'), model.get('id')); } }, + + actions: { + willTransition: function(/*transition*/) { + const controller = this.get('controller'); + const model = controller.get('model'); + + if (model.get('isNew')) { + model.destroyRecord(); + } + }, + }, }); diff --git a/app/mixins/save-model.js b/app/mixins/save-model.js index 0f83491..e7d920e 100644 --- a/app/mixins/save-model.js +++ b/app/mixins/save-model.js @@ -4,6 +4,8 @@ import ajaxError from '../utils/ajax-error'; const { Mixin } = Ember; export default Mixin.create({ + fallbackRoute: null, + actions: { save: function() { const model = this.get('model'); diff --git a/app/pods/protected/species/new/controller.js b/app/pods/protected/species/new/controller.js index 6170616..5f7591b 100644 --- a/app/pods/protected/species/new/controller.js +++ b/app/pods/protected/species/new/controller.js @@ -1,29 +1,9 @@ import Ember from 'ember'; -import ajaxError from '../../../../utils/ajax-error'; +import SaveModel from '../../../../mixins/save-model'; -export default Ember.Controller.extend({ - actions: { - save: function() { - let species = this.get('model'); +const { Controller } = Ember; - if (species.get('hasDirtyAttributes')) { - species.save().then((species) => { - this.transitionToRoute('protected.species.show', species.get('id')); - }, () => { - ajaxError(species.get('errors'), this.get('flashMessages')); - }); - } else { - species.destroyRecord().then(() => { - this.transitionToRoute('protected.species.index'); - }); - } - }, - - cancel: function() { - this.get('model').destroyRecord().then(() => { - this.transitionToRoute('protected.species.index'); - }); - }, - - }, +export default Controller.extend(SaveModel, { + // Required for SaveModel mixin + fallbackRoute: 'protected.species.show', }); diff --git a/app/pods/protected/species/new/route.js b/app/pods/protected/species/new/route.js index caf8dba..7ed36ec 100644 --- a/app/pods/protected/species/new/route.js +++ b/app/pods/protected/species/new/route.js @@ -1,30 +1,14 @@ import Ember from 'ember'; +import ElevatedAccess from '../../../../mixins/elevated-access'; -export default Ember.Route.extend({ - currentUser: Ember.inject.service('session-account'), +const { Route } = Ember; - beforeModel: function(transition) { - this._super(transition); - this.get('currentUser.account').then((user) => { - if (user.get('isReader')) { - this.transitionTo('protected.species.index'); - } - }); - }, +export default Route.extend(ElevatedAccess, { + // Required for ElevatedAccess mixin + fallbackRouteBefore: 'protected.species.index', + fallbackRouteAfter: 'protected.species.show', model: function() { return this.store.createRecord('species'); }, - - actions: { - willTransition: function(/*transition*/) { - const controller = this.get('controller'); - const species = controller.get('model'); - - if (species.get('isNew')) { - species.destroyRecord(); - } - }, - }, - }); diff --git a/app/pods/protected/species/new/template.hbs b/app/pods/protected/species/new/template.hbs index c3b8a05..68fed98 100644 --- a/app/pods/protected/species/new/template.hbs +++ b/app/pods/protected/species/new/template.hbs @@ -1,6 +1,6 @@ {{ protected/species/species-form species=model - save="save" - cancel="cancel" + on-save=(action "save") + on-cancel=(action "cancel") }}