From 726f4668e0352f75ddbc4f2489fdddf01e557271 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:15:48 +0530 Subject: [PATCH] refactor: webhooks (#2896) * refactor: webhooks workflow * chore: update delete modal content --- .../web-hooks/delete-webhook-modal.tsx | 65 ++++--- web/components/web-hooks/empty-state.tsx | 28 +++ web/components/web-hooks/empty-webhooks.tsx | 33 ---- .../web-hooks/form/delete-section.tsx | 48 +++++ web/components/web-hooks/form/edit-form.tsx | 50 ------ web/components/web-hooks/form/event-types.tsx | 44 +++++ web/components/web-hooks/form/form.tsx | 167 ++++++++++++++++++ .../web-hooks/form/generate-key.tsx | 139 --------------- web/components/web-hooks/form/index.ts | 7 + web/components/web-hooks/form/index.tsx | 102 ----------- .../form/individual-event-options.tsx | 69 ++++++++ web/components/web-hooks/form/input.tsx | 53 +++--- web/components/web-hooks/form/option.tsx | 70 -------- web/components/web-hooks/form/options.tsx | 54 ------ web/components/web-hooks/form/secret-key.tsx | 135 ++++++++++++++ web/components/web-hooks/form/submit.tsx | 13 -- web/components/web-hooks/form/toggle.tsx | 10 +- web/components/web-hooks/index.ts | 8 +- .../web-hooks/webhooks-list-item.tsx | 39 ++-- web/components/web-hooks/webhooks-list.tsx | 37 +--- .../settings-layout/workspace/sidebar.tsx | 2 +- web/lib/wrappers/store-wrapper.tsx | 6 +- .../[workspaceSlug]/settings/api-tokens.tsx | 9 +- .../settings/webhooks/[webhookId].tsx | 111 ++++++------ .../settings/webhooks/create.tsx | 112 ++++-------- .../settings/webhooks/index.tsx | 92 ++++++---- web/services/webhook.service.ts | 20 +-- web/store/webhook.store.ts | 88 ++++----- web/types/webhook.d.ts | 36 ++-- 29 files changed, 812 insertions(+), 835 deletions(-) create mode 100644 web/components/web-hooks/empty-state.tsx delete mode 100644 web/components/web-hooks/empty-webhooks.tsx create mode 100644 web/components/web-hooks/form/delete-section.tsx delete mode 100644 web/components/web-hooks/form/edit-form.tsx create mode 100644 web/components/web-hooks/form/event-types.tsx create mode 100644 web/components/web-hooks/form/form.tsx delete mode 100644 web/components/web-hooks/form/generate-key.tsx create mode 100644 web/components/web-hooks/form/index.ts delete mode 100644 web/components/web-hooks/form/index.tsx create mode 100644 web/components/web-hooks/form/individual-event-options.tsx delete mode 100644 web/components/web-hooks/form/option.tsx delete mode 100644 web/components/web-hooks/form/options.tsx create mode 100644 web/components/web-hooks/form/secret-key.tsx delete mode 100644 web/components/web-hooks/form/submit.tsx diff --git a/web/components/web-hooks/delete-webhook-modal.tsx b/web/components/web-hooks/delete-webhook-modal.tsx index 650da7c89..e051bd25f 100644 --- a/web/components/web-hooks/delete-webhook-modal.tsx +++ b/web/components/web-hooks/delete-webhook-modal.tsx @@ -1,30 +1,31 @@ import React, { FC, useState } from "react"; import { useRouter } from "next/router"; import { Dialog, Transition } from "@headlessui/react"; -// icons import { AlertTriangle } from "lucide-react"; -// ui -import { Button } from "@plane/ui"; +// mobx store +import { useMobxStore } from "lib/mobx/store-provider"; // hooks import useToast from "hooks/use-toast"; -import { useMobxStore } from "lib/mobx/store-provider"; +// ui +import { Button } from "@plane/ui"; interface IDeleteWebhook { isOpen: boolean; - webhook_url: string; onClose: () => void; } export const DeleteWebhookModal: FC = (props) => { const { isOpen, onClose } = props; - + // states + const [isDeleting, setIsDeleting] = useState(false); + // router const router = useRouter(); - - const { webhook: webhookStore } = useMobxStore(); - + // toast const { setToastAlert } = useToast(); - - const [deleting, setDelete] = useState(false); + // mobx store + const { + webhook: { removeWebhook }, + } = useMobxStore(); const { workspaceSlug, webhookId } = router.query; @@ -33,29 +34,27 @@ export const DeleteWebhookModal: FC = (props) => { }; const handleDelete = async () => { - setDelete(true); if (!workspaceSlug || !webhookId) return; - webhookStore - .remove(workspaceSlug.toString(), webhookId.toString()) + + setIsDeleting(true); + + removeWebhook(workspaceSlug.toString(), webhookId.toString()) .then(() => { setToastAlert({ - title: "Success", type: "success", - message: "Successfully deleted", + title: "Success!", + message: "Webhook deleted successfully.", }); router.replace(`/${workspaceSlug}/settings/webhooks/`); }) - .catch((error) => { - console.log(error); + .catch((error) => setToastAlert({ - title: "Oops!", type: "error", - message: error?.error, - }); - }) - .finally(() => { - setDelete(false); - }); + title: "Error!", + message: error?.error ?? "Something went wrong. Please try again.", + }) + ) + .finally(() => setIsDeleting(false)); }; return ( @@ -90,23 +89,21 @@ export const DeleteWebhookModal: FC = (props) => {