From d773bf51b6fd44991f3f31cddba5b7ab2507c617 Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Mon, 19 Sep 2022 13:57:46 +0300 Subject: [PATCH] Add deleting key --- app/controllers/admin/keys/key/delete.js | 26 +++++++++++++++++++ app/router.js | 1 + app/routes/admin/keys/key/delete.js | 3 +++ app/services/meilisearch.js | 6 +++++ app/templates/admin/keys/key.hbs | 2 +- app/templates/admin/keys/key/delete.hbs | 12 +++++++++ app/utils/query.js | 4 ++- .../controllers/admin/keys/key/delete-test.js | 12 +++++++++ .../unit/routes/admin/keys/key/delete-test.js | 11 ++++++++ 9 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 app/controllers/admin/keys/key/delete.js create mode 100644 app/routes/admin/keys/key/delete.js create mode 100644 app/templates/admin/keys/key/delete.hbs create mode 100644 tests/unit/controllers/admin/keys/key/delete-test.js create mode 100644 tests/unit/routes/admin/keys/key/delete-test.js 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 @@ - {{!-- --}} + {{outlet}} diff --git a/app/templates/admin/keys/key/delete.hbs b/app/templates/admin/keys/key/delete.hbs new file mode 100644 index 0000000..33faa14 --- /dev/null +++ b/app/templates/admin/keys/key/delete.hbs @@ -0,0 +1,12 @@ +

Are you sure you want to delete this key?

+ +