import React from "react"; import { observer } from "mobx-react-lite"; import Link from "next/link"; import { Pencil, X } from "lucide-react"; // hooks // components import { Tooltip } from "@plane/ui"; import { ParentIssuesListModal } from "components/issues"; // ui // helpers import { cn } from "helpers/common.helper"; import { useIssueDetail, useProject } from "hooks/store"; // types import { TIssueOperations } from "./root"; type TIssueParentSelect = { className?: string; disabled?: boolean; issueId: string; issueOperations: TIssueOperations; projectId: string; workspaceSlug: string; }; export const IssueParentSelect: React.FC = observer((props) => { const { className = "", disabled = false, issueId, issueOperations, projectId, workspaceSlug } = props; // store hooks const { getProjectById } = useProject(); const { issue: { getIssueById }, } = useIssueDetail(); const { isParentIssueModalOpen, toggleParentIssueModal } = useIssueDetail(); // derived values const issue = getIssueById(issueId); const parentIssue = issue?.parent_id ? getIssueById(issue.parent_id) : undefined; const parentIssueProjectDetails = parentIssue && parentIssue.project_id ? getProjectById(parentIssue.project_id) : undefined; const handleParentIssue = async (_issueId: string | null = null) => { try { await issueOperations.update(workspaceSlug, projectId, issueId, { parent_id: _issueId }); await issueOperations.fetch(workspaceSlug, projectId, issueId); toggleParentIssueModal(false); } catch (error) { console.error("something went wrong while fetching the issue"); } }; if (!issue) return <>; return ( <> toggleParentIssueModal(false)} onChange={(issue: any) => handleParentIssue(issue?.id)} /> ); });