meilisearch-admin/app/controllers/admin/keys/key/edit.js

55 lines
1.2 KiB
JavaScript
Raw Permalink Normal View History

2022-09-19 10:22:29 +00:00
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import ActionInvoker from 'meiliadmin/lib/action-invoker';
export default class AdminKeysKeyEditController extends Controller {
@service router;
2022-09-19 12:36:40 +00:00
@service toaster;
2022-09-19 10:22:29 +00:00
2022-10-15 12:13:34 +00:00
@tracked errors;
2022-09-19 10:22:29 +00:00
@tracked isSaving;
constructor() {
super(...arguments);
this.invoker = new ActionInvoker();
}
@action
async save(value) {
2022-09-21 11:26:09 +00:00
const isNew = this.model.isNew;
2022-09-19 10:22:29 +00:00
2022-10-15 12:13:34 +00:00
this.errors = [];
2022-09-19 10:22:29 +00:00
this.isSaving = true;
try {
const key = await this.model.save(value);
2022-09-21 11:11:29 +00:00
this.toaster.successToast({
2022-09-21 11:26:09 +00:00
header: `The key has been ${isNew ? 'created' : 'updated'}`,
2022-09-21 11:11:29 +00:00
});
2022-09-19 10:35:56 +00:00
if (this.router.isActive('admin.keys.key')) {
await this.router.refresh('admin.keys.key', key.uid);
}
2022-09-19 10:22:29 +00:00
await this.router.transitionTo('admin.keys.key.index', key.uid);
} catch (error) {
2022-10-15 12:13:34 +00:00
this.errors = [error.error || error];
2022-09-19 10:22:29 +00:00
} finally {
this.isSaving = false;
}
}
@action
cancel() {
const newRouteName = this.router.currentRouteName.replace(
/\.(new|edit|delete)$/,
''
);
this.router.transitionTo(newRouteName);
}
}