44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
|
import Controller from '@ember/controller';
|
||
|
import DeleteCollectionModal from '../components/collections/delete-collection-modal';
|
||
|
import {action} from '@ember/object';
|
||
|
import {inject as service} from '@ember/service';
|
||
|
import {task} from 'ember-concurrency';
|
||
|
|
||
|
export default class CollectionController extends Controller {
|
||
|
@service modals;
|
||
|
@service notifications;
|
||
|
@service router;
|
||
|
|
||
|
get collection() {
|
||
|
return this.model;
|
||
|
}
|
||
|
|
||
|
@action
|
||
|
confirmDeleteCollection() {
|
||
|
return this.modals.open(DeleteCollectionModal, {
|
||
|
collection: this.model
|
||
|
});
|
||
|
}
|
||
|
|
||
|
@task({drop: true})
|
||
|
*saveTask() {
|
||
|
let {collection} = this;
|
||
|
|
||
|
try {
|
||
|
if (collection.get('errors').length !== 0) {
|
||
|
return;
|
||
|
}
|
||
|
yield collection.save();
|
||
|
|
||
|
// replace 'new' route with 'collection' route
|
||
|
this.replaceRoute('collection', collection);
|
||
|
|
||
|
return collection;
|
||
|
} catch (error) {
|
||
|
if (error) {
|
||
|
this.notifications.showAPIError(error, {key: 'collection.save'});
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|