/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import Link from "next/link"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import { PriorityIcon } from "@plane/propel/icons"; import { Avatar } from "@plane/ui"; import { cn, renderFormattedDate } from "@plane/utils"; import type { TExternalContourBoardDirection, TExternalContourRequest, TInboxIssueCurrentTab } from "@plane/types"; import { ExternalContourStatePill } from "./state-pill"; type Props = { currentTab: TInboxIssueCurrentTab; direction: TExternalContourBoardDirection; projectId: string; request: TExternalContourRequest; workspaceSlug: string; }; export const ExternalContoursBoardItem = observer(function ExternalContoursBoardItem(props: Props) { const { currentTab, direction, projectId, request, workspaceSlug } = props; const { t } = useTranslation(); const issue = request.issue; const requester = request.requested_by?.display_name || request.requested_by_name || issue.created_by_detail?.display_name || "NODE.DC"; const requesterAvatar = issue.created_by_detail?.avatar_url || ""; const counterpartContourName = direction === "outgoing" ? request.target_project?.name || request.target_project_name || issue.project_detail?.name : request.source_project?.name || request.source_project_name; const assigneeDetails = issue.assignee_details?.slice(0, 2) ?? []; const lastUpdatedAt = issue.updated_at || request.updated_at; return (
{requester}
{request.has_unread_updates && }
{counterpartContourName || t("common.none")}

{issue.name}

{assigneeDetails.length > 0 ? ( assigneeDetails.map((assignee, index) => (
0 && "-ml-2")}>
)) ) : (
{t("external_contours_page.list.unassigned")}
)}
{renderFormattedDate(lastUpdatedAt ?? "")}
{issue.priority && issue.priority !== "none" && (
)}
); });