diff --git a/app/components/modal-delete-webhook.js b/app/components/modal-delete-webhook.js
new file mode 100644
index 0000000000..b39eeb90e3
--- /dev/null
+++ b/app/components/modal-delete-webhook.js
@@ -0,0 +1,26 @@
+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({
+ notifications: service(),
+
+ webhook: alias('model'),
+
+ actions: {
+ confirm() {
+ this.deleteWebhook.perform();
+ }
+ },
+
+ deleteWebhook: task(function* () {
+ try {
+ yield this.confirm();
+ } catch (error) {
+ this.notifications.showAPIError(error, {key: 'webhook.delete.failed'});
+ } finally {
+ this.send('closeModal');
+ }
+ }).drop()
+});
diff --git a/app/controllers/settings/integration.js b/app/controllers/settings/integration.js
index 9355297047..d680220bab 100644
--- a/app/controllers/settings/integration.js
+++ b/app/controllers/settings/integration.js
@@ -61,6 +61,18 @@ export default Controller.extend({
this.integration.rollbackAttributes();
return transition.retry();
+ },
+
+ confirmWebhookDeletion(webhook) {
+ this.set('webhookToDelete', webhook);
+ },
+
+ cancelWebhookDeletion() {
+ this.set('webhookToDelete', null);
+ },
+
+ deleteWebhook() {
+ return this.webhookToDelete.destroyRecord();
}
},
diff --git a/app/templates/components/modal-delete-webhook.hbs b/app/templates/components/modal-delete-webhook.hbs
new file mode 100644
index 0000000000..ac927a91ba
--- /dev/null
+++ b/app/templates/components/modal-delete-webhook.hbs
@@ -0,0 +1,15 @@
+Are you sure?
+
+ Deleting this webhook may prevent the integration from functioning. +
+