import React, { useState } from "react"; import { observer } from "mobx-react-lite"; import { X } from "lucide-react"; // hooks import { useIssueDetail, useProject } from "hooks/store"; import { Spinner } from "@plane/ui"; // components import { ParentIssuesListModal } from "components/issues"; import { TIssueOperations } from "./root"; type TIssueParentSelect = { workspaceSlug: string; projectId: string; issueId: string; issueOperations: TIssueOperations; disabled?: boolean; }; export const IssueParentSelect: React.FC = observer( ({ workspaceSlug, projectId, issueId, issueOperations, disabled = false }) => { // hooks const { getProjectById } = useProject(); const { issue: { getIssueById }, } = useIssueDetail(); // state const { isParentIssueModalOpen, toggleParentIssueModal } = useIssueDetail(); const [updating, setUpdating] = useState(false); 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) => { setUpdating(true); try { await issueOperations.update(workspaceSlug, projectId, issueId, { parent_id: _issueId }); await issueOperations.fetch(workspaceSlug, projectId, issueId); toggleParentIssueModal(false); setUpdating(false); } catch (error) { console.error("something went wrong while fetching the issue"); } }; if (!issue) return <>; return (
toggleParentIssueModal(false)} onChange={(issue: any) => handleParentIssue(issue?.id)} /> {updating && }
); } );