diff --git a/apps/app/components/inbox/decline-issue-modal.tsx b/apps/app/components/inbox/decline-issue-modal.tsx index 64fe1682a..941841659 100644 --- a/apps/app/components/inbox/decline-issue-modal.tsx +++ b/apps/app/components/inbox/decline-issue-modal.tsx @@ -1,102 +1,33 @@ -import React, { useEffect, useState } from "react"; - -import { useRouter } from "next/router"; - -import { mutate } from "swr"; +import React, { useState } from "react"; // headless ui import { Dialog, Transition } from "@headlessui/react"; -// services -import inboxServices from "services/inbox.service"; -// hooks -import useToast from "hooks/use-toast"; -import useInboxView from "hooks/use-inbox-view"; -import useUser from "hooks/use-user"; // icons import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; // ui import { SecondaryButton, DangerButton } from "components/ui"; // types -import type { IInboxIssue, ICurrentUserResponse, IInboxIssueDetail } from "types"; -// fetch-keys -import { INBOX_ISSUES, INBOX_ISSUE_DETAILS } from "constants/fetch-keys"; +import type { IInboxIssue } from "types"; type Props = { isOpen: boolean; handleClose: () => void; data: IInboxIssue | undefined; + onSubmit: () => Promise; }; -export const DeclineIssueModal: React.FC = ({ isOpen, handleClose, data }) => { +export const DeclineIssueModal: React.FC = ({ isOpen, handleClose, data, onSubmit }) => { const [isDeclining, setIsDeclining] = useState(false); - const router = useRouter(); - const { workspaceSlug, projectId, inboxId } = router.query; - - const { user } = useUser(); - const { setToastAlert } = useToast(); - const { params } = useInboxView(); - const onClose = () => { setIsDeclining(false); handleClose(); }; const handleDecline = () => { - if (!workspaceSlug || !projectId || !inboxId || !data) return; - setIsDeclining(true); - inboxServices - .markInboxStatus( - workspaceSlug.toString(), - projectId.toString(), - inboxId.toString(), - data.bridge_id, - { - status: -1, - }, - user - ) - .then(() => { - mutate( - INBOX_ISSUE_DETAILS(inboxId.toString(), data.bridge_id), - (prevData) => { - if (!prevData) return prevData; - - return { - ...prevData, - issue_inbox: [{ ...prevData.issue_inbox[0], status: -1 }], - }; - }, - false - ); - mutate( - INBOX_ISSUES(inboxId.toString(), params), - (prevData) => - prevData?.map((i) => - i.bridge_id === data.bridge_id - ? { ...i, issue_inbox: [{ ...i.issue_inbox[0], status: -1 }] } - : i - ), - false - ); - - setToastAlert({ - type: "success", - title: "Success!", - message: "Issue declined successfully.", - }); - onClose(); - }) - .catch(() => - setToastAlert({ - type: "error", - title: "Error!", - message: "Issue could not be declined. Please try again.", - }) - ) - .finally(() => setIsDeclining(false)); + onSubmit().finally(() => setIsDeclining(false)); }; return ( diff --git a/apps/app/pages/[workspaceSlug]/projects/[projectId]/inbox/[inboxId].tsx b/apps/app/pages/[workspaceSlug]/projects/[projectId]/inbox/[inboxId].tsx index c08925c0f..140e704ed 100644 --- a/apps/app/pages/[workspaceSlug]/projects/[projectId]/inbox/[inboxId].tsx +++ b/apps/app/pages/[workspaceSlug]/projects/[projectId]/inbox/[inboxId].tsx @@ -194,6 +194,11 @@ const ProjectInbox: NextPage = () => { isOpen={declineIssueModal} handleClose={() => setDeclineIssueModal(false)} data={inboxIssues?.find((i) => i.bridge_id === inboxIssueId)} + onSubmit={async () => { + await markInboxStatus({ + status: -1, + }).finally(() => setDeclineIssueModal(false)); + }} />