/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import { Badge } from "@plane/propel/badge"; import type { TExternalContourRequest } from "@plane/types"; import { Avatar } from "@plane/ui"; import { renderFormattedDate } from "@plane/utils"; import { ExternalContourStatePill } from "./state-pill"; type Props = { contourRequest: TExternalContourRequest; }; export const ExternalContoursRequestTraceability = observer(function ExternalContoursRequestTraceability(props: Props) { const { contourRequest } = props; const { t } = useTranslation(); const issue = contourRequest.issue; const requestedByName = contourRequest.requested_by_name || issue.created_by_detail?.display_name || t("common.none"); const requestedAt = contourRequest.requested_at || contourRequest.created_at; const lastUpdatedAt = issue.updated_at || contourRequest.updated_at; const targetProjectName = contourRequest.target_project_name || issue.project_detail?.name || t("common.none"); const sourceDecision = contourRequest.source_decision === "accepted" ? t("external_contours_page.traceability.source_decision_accepted") : t("external_contours_page.traceability.source_decision_pending"); const targetIssueKey = issue.project_detail?.identifier && issue.sequence_id ? `${issue.project_detail.identifier}-${issue.sequence_id}` : issue.sequence_id ? `#${issue.sequence_id}` : t("common.none"); return (
{t("external_contours_page.traceability.description")}