diff --git a/app/controllers/admin/keys/key/delete.js b/app/controllers/admin/keys/key/delete.js
new file mode 100644
index 0000000..8482719
--- /dev/null
+++ b/app/controllers/admin/keys/key/delete.js
@@ -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);
+ }
+}
diff --git a/app/router.js b/app/router.js
index a03a68c..7e1fbc3 100644
--- a/app/router.js
+++ b/app/router.js
@@ -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');
});
diff --git a/app/routes/admin/keys/key/delete.js b/app/routes/admin/keys/key/delete.js
new file mode 100644
index 0000000..da3d184
--- /dev/null
+++ b/app/routes/admin/keys/key/delete.js
@@ -0,0 +1,3 @@
+import Route from '@ember/routing/route';
+
+export default class AdminKeysKeyDeleteRoute extends Route {}
diff --git a/app/services/meilisearch.js b/app/services/meilisearch.js
index 8772538..c8f5528 100644
--- a/app/services/meilisearch.js
+++ b/app/services/meilisearch.js
@@ -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]);
diff --git a/app/templates/admin/keys/key.hbs b/app/templates/admin/keys/key.hbs
index 27cabae..0c9c120 100644
--- a/app/templates/admin/keys/key.hbs
+++ b/app/templates/admin/keys/key.hbs
@@ -3,7 +3,7 @@
Are you sure you want to delete this key?
+ + + + diff --git a/app/utils/query.js b/app/utils/query.js index 99bcb98..bfda9ec 100644 --- a/app/utils/query.js +++ b/app/utils/query.js @@ -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'); diff --git a/tests/unit/controllers/admin/keys/key/delete-test.js b/tests/unit/controllers/admin/keys/key/delete-test.js new file mode 100644 index 0000000..ec545f6 --- /dev/null +++ b/tests/unit/controllers/admin/keys/key/delete-test.js @@ -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); + }); +}); diff --git a/tests/unit/routes/admin/keys/key/delete-test.js b/tests/unit/routes/admin/keys/key/delete-test.js new file mode 100644 index 0000000..c268384 --- /dev/null +++ b/tests/unit/routes/admin/keys/key/delete-test.js @@ -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); + }); +});