import { useRouter } from "next/router"; import { observer } from "mobx-react-lite"; // components import { IssueProperties } from "../properties/all-properties"; // ui import { Spinner, Tooltip } from "@plane/ui"; // types import { TIssue, IIssueDisplayProperties, TIssueMap } from "@plane/types"; import { EIssueActions } from "../types"; import { useProject } from "hooks/store"; interface IssueBlockProps { issueId: string; issuesMap: TIssueMap; handleIssues: (issue: TIssue, action: EIssueActions) => void; quickActions: (issue: TIssue) => React.ReactNode; displayProperties: IIssueDisplayProperties | undefined; canEditProperties: (projectId: string | undefined) => boolean; } export const IssueBlock: React.FC = observer((props: IssueBlockProps) => { const { issuesMap, issueId, handleIssues, quickActions, displayProperties, canEditProperties } = props; // router const router = useRouter(); const updateIssue = (issueToUpdate: TIssue) => { handleIssues(issueToUpdate, EIssueActions.UPDATE); }; const issue = issuesMap[issueId]; if (!issue) return null; const handleIssuePeekOverview = () => { const { query } = router; router.push({ pathname: router.pathname, query: { ...query, peekIssueId: issue?.id, peekProjectId: issue?.project_id }, }); }; const canEditIssueProperties = canEditProperties(issue.project_id); const { getProjectById } = useProject(); const projectDetails = getProjectById(issue.project_id); return ( <>
{displayProperties && displayProperties?.key && (
{projectDetails?.identifier}-{issue.sequence_id}
)} {issue?.tempId !== undefined && (
)}
{issue.name}
{!issue?.tempId ? ( <> {quickActions(issue)} ) : (
)}
); });