Add deleting key

This commit is contained in:
Stanislav Romanov 2022-09-19 13:57:46 +03:00
parent 276bbaf8a3
commit d773bf51b6
9 changed files with 75 additions and 2 deletions

View file

@ -0,0 +1,26 @@
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
export default class AdminKeysKeyDeleteController extends Controller {
@service router;
@service meilisearch;
@service toasts;
@action
delete() {
return this.meilisearch.deleteKey(this.model.uid).then(() => {
// TODO: add toast
return this.router.transitionTo('admin.keys');
});
}
@action
cancel() {
const newRouteName = this.router.currentRouteName.replace(
/\.(new|edit|delete)$/,
''
);
this.router.transitionTo(newRouteName);
}
}

View file

@ -27,6 +27,7 @@ Router.map(function () {
this.route('keys', function () {
this.route('key', { path: '/:uid' }, function () {
this.route('edit');
this.route('delete');
});
this.route('new');
});

View file

@ -0,0 +1,3 @@
import Route from '@ember/routing/route';
export default class AdminKeysKeyDeleteRoute extends Route {}

View file

@ -45,6 +45,12 @@ export default class MeilisearchService extends Service {
return query(`keys/${uid}`).then((item) => new Key(item));
}
deleteKey(uid) {
return query(`keys/${uid}`, {
method: 'DELETE',
});
}
getTasks(params, options = {}) {
// Clear from undefined fields
Object.keys(params).forEach((key) => params[key] ?? delete params[key]);

View file

@ -3,7 +3,7 @@
<Tabs>
<Tab @route="admin.keys.key.index" @text="View" @model={{@model}} />
<Tab @route="admin.keys.key.edit" @text="Edit" @model={{@model}} />
{{!-- <Tab @route="admin.indexes.item.settings" @text="Delete" @model={{@model}} /> --}}
<Tab @route="admin.keys.key.delete" @text="Delete" @model={{@model}} />
</Tabs>
{{outlet}}

View file

@ -0,0 +1,12 @@
<p>Are you sure you want to delete this key?</p>
<Button
@text='Yes'
@style='primary'
@onClick={{this.delete}}
/>
<Button
@text='No'
@onClick={{this.cancel}}
/>

View file

@ -16,7 +16,9 @@ export default function query(path, options = {}) {
);
return fetch(req).then((response) => {
if (response.ok) {
if (response.status === 204) {
return;
} else if (response.ok) {
return response.json();
} else {
throw new Error('Network response was not OK');

View file

@ -0,0 +1,12 @@
import { module, test } from 'qunit';
import { setupTest } from 'meiliadmin/tests/helpers';
module('Unit | Controller | admin/keys/key/delete', function (hooks) {
setupTest(hooks);
// TODO: Replace this with your real tests.
test('it exists', function (assert) {
let controller = this.owner.lookup('controller:admin/keys/key/delete');
assert.ok(controller);
});
});

View file

@ -0,0 +1,11 @@
import { module, test } from 'qunit';
import { setupTest } from 'meiliadmin/tests/helpers';
module('Unit | Route | admin/keys/key/delete', function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let route = this.owner.lookup('route:admin/keys/key/delete');
assert.ok(route);
});
});