/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { Fragment, useEffect } from "react"; import { observer } from "mobx-react"; import { useRouter, useSearchParams } from "next/navigation"; import { Dialog, Transition } from "@headlessui/react"; // hooks import { useIssueDetails } from "@/hooks/store/use-issue-details"; // local imports import { FullScreenPeekView } from "./full-screen-peek-view"; import { SidePeekView } from "./side-peek-view"; type TIssuePeekOverview = { anchor: string; peekId: string; handlePeekClose?: () => void; }; export const IssuePeekOverview = observer(function IssuePeekOverview(props: TIssuePeekOverview) { const { anchor, peekId, handlePeekClose } = props; const router = useRouter(); const searchParams = useSearchParams(); // query params const board = searchParams.get("board") || undefined; const state = searchParams.get("state") || undefined; const priority = searchParams.get("priority") || undefined; const labels = searchParams.get("labels") || undefined; // store const { peekMode, setPeekId, getIssueById, fetchIssueDetails } = useIssueDetails(); // derived values const issueDetails = peekId ? getIssueById(peekId.toString()) : undefined; // state const isSidePeekOpen = !!peekId && peekMode === "side"; const isModalPeekOpen = !!peekId && (peekMode === "modal" || peekMode === "full"); useEffect(() => { if (anchor && peekId) { fetchIssueDetails(anchor, peekId.toString()); } }, [anchor, fetchIssueDetails, peekId]); const handleClose = () => { // if close logic is passed down, call that instead of the below logic if (handlePeekClose) { handlePeekClose(); return; } setPeekId(null); let queryParams: any = { board, }; if (priority && priority.length > 0) queryParams = { ...queryParams, priority: priority }; if (state && state.length > 0) queryParams = { ...queryParams, state: state }; if (labels && labels.length > 0) queryParams = { ...queryParams, labels: labels }; queryParams = new URLSearchParams(queryParams).toString(); router.push(`/issues/${anchor}?${queryParams}`); }; return ( <>
{peekMode === "modal" && ( )} {peekMode === "full" && ( )}
); });