/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import type { MutableRefObject } from "react"; import { observer } from "mobx-react"; import { Link } from "react-router"; import { useParams, useSearchParams } from "next/navigation"; // plane types import { Tooltip } from "@plane/propel/tooltip"; import type { IIssueDisplayProperties } from "@plane/types"; // plane ui // plane utils import { cn } from "@plane/utils"; // components import { WithDisplayPropertiesHOC } from "@/components/issues/issue-layouts/with-display-properties-HOC"; // helpers import { queryParamGenerator } from "@/helpers/query-param-generator"; // hooks import { usePublish } from "@/hooks/store/publish"; import { useIssueDetails } from "@/hooks/store/use-issue-details"; // import type { IIssue } from "@/types/issue"; import { IssueProperties } from "../properties/all-properties"; import { getIssueBlockId } from "../utils"; import { BlockReactions } from "./block-reactions"; interface IssueBlockProps { issueId: string; groupId: string; subGroupId: string; displayProperties: IIssueDisplayProperties | undefined; scrollableContainerRef?: MutableRefObject; } interface IssueDetailsBlockProps { issue: IIssue; displayProperties: IIssueDisplayProperties | undefined; } const KanbanIssueDetailsBlock = observer(function KanbanIssueDetailsBlock(props: IssueDetailsBlockProps) { const { issue, displayProperties } = props; const { anchor } = useParams(); // hooks const { project_details } = usePublish(anchor.toString()); return (
{project_details?.identifier}-{issue.sequence_id}
{issue.name}
); }); export const KanbanIssueBlock = observer(function KanbanIssueBlock(props: IssueBlockProps) { const { issueId, groupId, subGroupId, displayProperties } = props; const searchParams = useSearchParams(); // query params const board = searchParams.get("board"); // hooks const { setPeekId, getIsIssuePeeked, getIssueById } = useIssueDetails(); const handleIssuePeekOverview = () => { setPeekId(issueId); }; const { queryParam } = queryParamGenerator(board ? { board, peekId: issueId } : { peekId: issueId }); const issue = getIssueById(issueId); if (!issue) return null; return (
); });