diff --git a/ghost/admin/app/components/modal-delete-integration.hbs b/ghost/admin/app/components/modal-delete-integration.hbs deleted file mode 100644 index eb4a58e1f6..0000000000 --- a/ghost/admin/app/components/modal-delete-integration.hbs +++ /dev/null @@ -1,17 +0,0 @@ - -{{svg-jar "close"}} - - diff --git a/ghost/admin/app/components/modal-delete-integration.js b/ghost/admin/app/components/modal-delete-integration.js deleted file mode 100644 index 7fa262b9ff..0000000000 --- a/ghost/admin/app/components/modal-delete-integration.js +++ /dev/null @@ -1,26 +0,0 @@ -import ModalComponent from 'ghost-admin/components/modal-base'; -import {alias} from '@ember/object/computed'; -import {inject as service} from '@ember/service'; -import {task} from 'ember-concurrency'; - -export default ModalComponent.extend({ - router: service(), - feature: service(), - notifications: service(), - integration: alias('model'), - actions: { - confirm() { - this.deleteIntegration.perform(); - } - }, - deleteIntegration: task(function* () { - try { - yield this.confirm(); - this.router.transitionTo('settings.integrations'); - } catch (error) { - this.notifications.showAPIError(error, {key: 'integration.delete.failed'}); - } finally { - this.send('closeModal'); - } - }).drop() -}); diff --git a/ghost/admin/app/components/settings/integrations/delete-integration-modal.hbs b/ghost/admin/app/components/settings/integrations/delete-integration-modal.hbs new file mode 100644 index 0000000000..a7a72e93d0 --- /dev/null +++ b/ghost/admin/app/components/settings/integrations/delete-integration-modal.hbs @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/ghost/admin/app/components/settings/integrations/delete-integration-modal.js b/ghost/admin/app/components/settings/integrations/delete-integration-modal.js new file mode 100644 index 0000000000..c9ae9ab505 --- /dev/null +++ b/ghost/admin/app/components/settings/integrations/delete-integration-modal.js @@ -0,0 +1,29 @@ +import Component from '@glimmer/component'; +import {inject as service} from '@ember/service'; +import {task} from 'ember-concurrency'; + +export default class DeleteIntegrationModal extends Component { + @service notifications; + @service router; + + @task({drop: true}) + *deleteIntegrationTask() { + try { + const {integration} = this.args.data; + + if (integration.isDeleted) { + return true; + } + + yield integration.destroyRecord(); + + this.notifications.closeAlerts('integration.delete'); + this.router.transitionTo('settings.integrations'); + return true; + } catch (error) { + this.notifications.showAPIError(error, {key: 'integration.delete.failed'}); + } finally { + this.args.close(); + } + } +} diff --git a/ghost/admin/app/controllers/settings/integration.js b/ghost/admin/app/controllers/settings/integration.js index be288b0ca5..0fbd69085d 100644 --- a/ghost/admin/app/controllers/settings/integration.js +++ b/ghost/admin/app/controllers/settings/integration.js @@ -1,4 +1,5 @@ import Controller from '@ember/controller'; +import DeleteIntegrationModal from '../../components/settings/integrations/delete-integration-modal'; import config from 'ghost-admin/config/environment'; import copyTextToClipboard from 'ghost-admin/utils/copy-text-to-clipboard'; import { @@ -14,11 +15,11 @@ import {tracked} from '@glimmer/tracking'; export default class IntegrationController extends Controller { @service config; @service ghostPaths; + @service modals; imageExtensions = IMAGE_EXTENSIONS; imageMimeTypes = IMAGE_MIME_TYPES; - @tracked showDeleteIntegrationModal = false; @tracked showRegenerateKeyModal = false; @tracked showUnsavedChangesModal = false; @tracked selectedApiKey = null; @@ -148,22 +149,12 @@ export default class IntegrationController extends Controller { return transition.retry(); } - @action - deleteIntegration(event) { - event?.preventDefault(); - this.integration.destroyRecord(); - } - @action confirmIntegrationDeletion(event) { event?.preventDefault(); - this.showDeleteIntegrationModal = true; - } - - @action - cancelIntegrationDeletion(event) { - event?.preventDefault(); - this.showDeleteIntegrationModal = false; + return this.modals.open(DeleteIntegrationModal, { + integration: this.integration + }); } @action diff --git a/ghost/admin/app/templates/settings/integration.hbs b/ghost/admin/app/templates/settings/integration.hbs index 5bdfe9912f..aa2692f199 100644 --- a/ghost/admin/app/templates/settings/integration.hbs +++ b/ghost/admin/app/templates/settings/integration.hbs @@ -215,7 +215,7 @@
  • Edit - +
  • @@ -290,13 +290,6 @@ @modifier="action wide" /> {{/if}} -{{#if this.showDeleteIntegrationModal}} - -{{/if}} - {{#if this.webhookToDelete}}