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 b96aadd8e1..b058d70457 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 @@ -29,7 +29,7 @@ const triggers = [ export default function AddWebhookModal({ environmentId, surveys, open, setOpen }: AddWebhookModalProps) { const router = useRouter(); - const { handleSubmit, reset } = useForm(); + const { handleSubmit, reset, register } = useForm(); const [testEndpointInput, setTestEndpointInput] = useState(""); const [hittingEndpoint, setHittingEndpoint] = useState(false); const [endpointAccessible, setEndpointAccessible] = useState(); @@ -38,7 +38,7 @@ export default function AddWebhookModal({ environmentId, surveys, open, setOpen const [selectedAllSurveys, setSelectedAllSurveys] = useState(false); const [creatingWebhook, setCreatingWebhook] = useState(false); - const submitWebhook = async (): Promise => { + const submitWebhook = async (data: TWebhookInput): Promise => { setCreatingWebhook(true); if (testEndpointInput === undefined || testEndpointInput === "") { toast.error("Please enter a URL"); @@ -58,6 +58,7 @@ export default function AddWebhookModal({ environmentId, surveys, open, setOpen } const updatedData: TWebhookInput = { + name: data.name, url: testEndpointInput, triggers: selectedTriggers, surveyIds: selectedSurveys, @@ -149,6 +150,18 @@ export default function AddWebhookModal({ environmentId, surveys, open, setOpen
+
+ +
+ +
+
+
diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookDetailModal.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookDetailModal.tsx index 7dbe4f5602..332cb1745d 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookDetailModal.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookDetailModal.tsx @@ -39,7 +39,7 @@ export default function WebhookModal({ environmentId, open, setOpen, webhook, su setOpen={setOpen} tabs={tabs} icon={} - label={webhook.url} + label={webhook.name ? webhook.name : webhook.url} description={""} /> diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookOverviewTab.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookOverviewTab.tsx index c9b269e255..65af945134 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookOverviewTab.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookOverviewTab.tsx @@ -36,6 +36,11 @@ export default function WebhookOverviewTab({ webhook, surveys }: ActivityTabProp return (
+
+ +

{webhook.name ? webhook.name : "-"}

+
+

{webhook.url}

diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookRowData.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookRowData.tsx index 8e5a696039..fec613708c 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookRowData.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookRowData.tsx @@ -55,7 +55,14 @@ export default function WebhookRowData({ webhook, surveys }: { webhook: TWebhook
-
{webhook.url}
+ {webhook.name ? ( +
+
{webhook.name ? webhook.name : webhook.url}
+
{webhook.url}
+
+ ) : ( +
{webhook.url}
+ )}
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 51e0084598..08275a79c6 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 @@ -66,6 +66,7 @@ export default function WebhookSettingsTab({ const { register, handleSubmit } = useForm({ defaultValues: { + name: webhook.name, url: webhook.url, triggers: webhook.triggers, surveyIds: webhook.surveyIds, @@ -88,6 +89,7 @@ export default function WebhookSettingsTab({ } const updatedData: TWebhookInput = { + name: data.name, url: data.url as string, triggers: selectedTriggers, surveyIds: selectedSurveys, @@ -122,6 +124,19 @@ export default function WebhookSettingsTab({ return (
+
+ +
+ +
+
+
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 fecf05e268..aa13c0fe17 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 @@ -26,6 +26,7 @@ export default function WebhookTable({ const [activeWebhook, setActiveWebhook] = useState({ environmentId, id: "", + name: "", url: "", triggers: [], surveyIds: [], diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTableHeading.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTableHeading.tsx index 9c83d1d6fb..43de96084d 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTableHeading.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/WebhookTableHeading.tsx @@ -3,7 +3,7 @@ export default function WebhookTableHeading() { <>
Edit -
URL
+
Webhook
Surveys
Triggers
Updated
diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/loading.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/loading.tsx index 8868ab99de..8830872270 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/loading.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/custom-webhook/loading.tsx @@ -18,7 +18,7 @@ export default function Loading() {
Edit -
URL
+
Webhook
Surveys
Triggers
Updated
diff --git a/packages/lib/services/webhook.ts b/packages/lib/services/webhook.ts index c278340191..400afa6b25 100644 --- a/packages/lib/services/webhook.ts +++ b/packages/lib/services/webhook.ts @@ -37,6 +37,7 @@ export const createWebhook = async ( } return await prisma.webhook.create({ data: { + name: webhookInput.name, url: webhookInput.url, triggers: webhookInput.triggers, surveyIds: webhookInput.surveyIds || [], @@ -66,6 +67,7 @@ export const updateWebhook = async ( id: webhookId, }, data: { + name: webhookInput.name, url: webhookInput.url, triggers: webhookInput.triggers, surveyIds: webhookInput.surveyIds || [], diff --git a/packages/types/v1/webhooks.ts b/packages/types/v1/webhooks.ts index 9582d8822c..df64c3d2b2 100644 --- a/packages/types/v1/webhooks.ts +++ b/packages/types/v1/webhooks.ts @@ -3,6 +3,7 @@ import { ZPipelineTrigger } from "./pipelines"; export const ZWebhook = z.object({ id: z.string().cuid2(), + name: z.string().nullable(), createdAt: z.date(), updatedAt: z.date(), url: z.string().url(), @@ -15,6 +16,7 @@ export type TWebhook = z.infer; export const ZWebhookInput = z.object({ url: z.string().url(), + name: z.string().nullable(), triggers: z.array(ZPipelineTrigger), surveyIds: z.array(z.string().cuid2()).optional(), });