diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/AddWebhookModal.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/AddWebhookModal.tsx index bdcee750e7..b96aadd8e1 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/AddWebhookModal.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/AddWebhookModal.tsx @@ -36,14 +36,24 @@ export default function AddWebhookModal({ environmentId, surveys, open, setOpen const [selectedTriggers, setSelectedTriggers] = useState([]); const [selectedSurveys, setSelectedSurveys] = useState([]); const [selectedAllSurveys, setSelectedAllSurveys] = useState(false); + const [creatingWebhook, setCreatingWebhook] = useState(false); const submitWebhook = async (): Promise => { + setCreatingWebhook(true); if (testEndpointInput === undefined || testEndpointInput === "") { toast.error("Please enter a URL"); + setCreatingWebhook(false); return; } if (selectedTriggers.length === 0) { toast.error("Please select at least one trigger"); + setCreatingWebhook(false); + return; + } + + if (!selectedAllSurveys && selectedSurveys.length === 0) { + toast.error("Please select at least one survey"); + setCreatingWebhook(false); return; } @@ -53,11 +63,17 @@ export default function AddWebhookModal({ environmentId, surveys, open, setOpen surveyIds: selectedSurveys, }; try { + const endpointHitSuccessfully = await handleTestEndpoint(); + if (!endpointHitSuccessfully) { + setCreatingWebhook(false); + return; + } await createWebhook(environmentId, updatedData); router.refresh(); resetStates(); reset(); setOpen(false); + setCreatingWebhook(false); toast.success("Webhook added successfully."); } catch (e) { toast.error(e.message); @@ -105,10 +121,12 @@ export default function AddWebhookModal({ environmentId, surveys, open, setOpen setHittingEndpoint(false); toast.success("Yay! We are able to ping the webhook!"); setEndpointAccessible(true); + return true; } catch (err) { setHittingEndpoint(false); toast.error("Oh no! We are unable to ping the webhook!"); setEndpointAccessible(false); + return false; } }; @@ -167,8 +185,8 @@ export default function AddWebhookModal({ environmentId, surveys, open, setOpen
-
-
+
+
{triggers.map((survey) => (
diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookSettingsTab.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookSettingsTab.tsx index 9bbdb89b17..51e0084598 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookSettingsTab.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookSettingsTab.tsx @@ -50,10 +50,12 @@ export default function WebhookSettingsTab({ setHittingEndpoint(false); toast.success("Yay! We are able to ping the webhook!"); setEndpointAccessible(true); + return true; } catch (err) { setHittingEndpoint(false); toast.error("Oh no! We are unable to ping the webhook!"); setEndpointAccessible(false); + return false; } }; @@ -71,10 +73,20 @@ export default function WebhookSettingsTab({ }); const onSubmit = async (data) => { + const endpointHitSuccessfully = await handleTestEndpoint(); + if (!endpointHitSuccessfully) { + return; + } if (selectedTriggers.length === 0) { toast.error("Please select at least one trigger"); return; } + + if (!selectedAllSurveys && selectedSurveys.length === 0) { + toast.error("Please select at least one survey"); + return; + } + const updatedData: TWebhookInput = { url: data.url as string, triggers: selectedTriggers, diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTable.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTable.tsx index 85dcb7cc08..fecf05e268 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTable.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTable.tsx @@ -63,26 +63,6 @@ export default function WebhookTable({
{TableHeading}
-
-
-
-
-
webhook.url
-
-
-
-
-
surveysbaazi
-
-
-
trigeysbaazi
-
- -
- kab bana -
-
-
{webhooks.map((webhook, index) => (