diff --git a/frontend/app/components/Client/Webhooks/WebhookForm.js b/frontend/app/components/Client/Webhooks/WebhookForm.js
index 62f009f1e..08799456f 100644
--- a/frontend/app/components/Client/Webhooks/WebhookForm.js
+++ b/frontend/app/components/Client/Webhooks/WebhookForm.js
@@ -1,75 +1,86 @@
import React from 'react';
import { Form, Button, Input } from 'UI';
import styles from './webhookForm.module.css';
-import { useStore } from 'App/mstore'
-import { observer } from 'mobx-react-lite'
+import { useStore } from 'App/mstore';
+import { observer } from 'mobx-react-lite';
+import { toast } from 'react-toastify';
function WebhookForm(props) {
- const { settingsStore } = useStore()
- const { webhookInst: webhook, hooksLoading: loading, saveWebhook, editWebhook } = settingsStore
- const write = ({ target: { value, name } }) => editWebhook({ [name]: value });
+ const { settingsStore } = useStore();
+ const { webhookInst: webhook, hooksLoading: loading, saveWebhook, editWebhook } = settingsStore;
+ const write = ({ target: { value, name } }) => editWebhook({ [name]: value });
- const save = () => {
- saveWebhook(webhook).then(() => {
- props.onClose();
- });
- };
+ const save = () => {
+ saveWebhook(webhook)
+ .then(() => {
+ props.onClose();
+ })
+ .catch((e) => {
+ const baseStr = 'Error saving webhook';
+ if (e.response) {
+ e.response.json().then(({ errors }) => {
+ toast.error(baseStr + ': ' + errors.join(','));
+ });
+ } else {
+ toast.error(baseStr);
+ }
+ });
+ };
+ return (
+
+
{webhook.exists() ? 'Update' : 'Add'} Webhook
+
+
+
+
- return (
-
-
{webhook.exists() ? 'Update' : 'Add'} Webhook
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
- {webhook.exists() && }
-
- {webhook.exists() &&
-
}
-
-
+
+
+
+ {webhook.exists() && }
+
+ {webhook.exists() && (
+
+ )}
- );
+
+
+ );
}
export default observer(WebhookForm);
diff --git a/frontend/app/mstore/settingsStore.ts b/frontend/app/mstore/settingsStore.ts
index 7dd584fd3..c31071694 100644
--- a/frontend/app/mstore/settingsStore.ts
+++ b/frontend/app/mstore/settingsStore.ts
@@ -6,7 +6,6 @@ import Webhook, { IWebhook } from 'Types/webhook';
import {
webhookService
} from 'App/services';
-import Alert, { IAlert } from "Types/alert";
export default class SettingsStore {
loadingCaptureRate: boolean = false;
@@ -73,8 +72,11 @@ export default class SettingsStore {
this.webhookInst = new Webhook(data)
if (inst.webhookId === undefined) this.setWebhooks([...this.webhooks, this.webhookInst])
else this.setWebhooks([...this.webhooks.filter(hook => hook.webhookId !== data.webhookId), this.webhookInst])
- this.hooksLoading = false
+
})
+ .finally(() => {
+ this.hooksLoading = false
+ })
}
setWebhooks = (webhooks: Webhook[]) => {
diff --git a/frontend/app/services/WebhookService.ts b/frontend/app/services/WebhookService.ts
index 2bcefa619..7b1073867 100644
--- a/frontend/app/services/WebhookService.ts
+++ b/frontend/app/services/WebhookService.ts
@@ -6,20 +6,17 @@ export default class WebhookService extends BaseService {
return this.client.get('/webhooks')
.then(r => r.json())
.then(j => j.data || [])
- .catch(Promise.reject)
}
saveWebhook(inst: Webhook) {
return this.client.put('/webhooks', inst)
.then(r => r.json())
.then(j => j.data || {})
- .catch(Promise.reject)
}
removeWebhook(id: Webhook["webhookId"]) {
return this.client.delete('/webhooks/' + id)
.then(r => r.json())
.then(j => j.data || {})
- .catch(Promise.reject)
}
}
\ No newline at end of file