diff --git a/src/app/(frontend)/intelligence/missions/[id]/page.tsx b/src/app/(frontend)/intelligence/missions/[id]/page.tsx index c5b108c..c4e42be 100644 --- a/src/app/(frontend)/intelligence/missions/[id]/page.tsx +++ b/src/app/(frontend)/intelligence/missions/[id]/page.tsx @@ -3,7 +3,7 @@ import { getPayload } from "payload"; import { notFound } from "next/navigation"; import Link from "next/link"; import { headers as nextHeaders } from "next/headers"; -import type { Campaign, Map, Media, Mission } from "@/payload-types"; +import type { Campaign, Map, Media, Mission, User } from "@/payload-types"; import { ArrowLeftIcon, CalendarDaysIcon, @@ -13,6 +13,7 @@ import { FlagIcon, MapPinIcon, ServerIcon, + UserIcon, } from "lucide-react"; import { Item, ItemContent, ItemHeader, ItemTitle } from "@/components/ui/item"; import { ClientDate } from "@/components/frontend/ClientDate"; @@ -94,6 +95,13 @@ export default async function MissionDetailPage({ params }: MissionDetailPagePro ? (missionWithCoverImage.coverImage as Media) : null; const coverImageUrl = coverImage?.url ?? null; + const host = + mission.operationType === "side" && + typeof mission.createdBy === "object" && + mission.createdBy !== null + ? (mission.createdBy as User) + : null; + const hostLabel = host ? (host.displayName || host.username) : null; const durationHours = Math.floor(mission.classification.estimatedDuration / 60); const durationMins = mission.classification.estimatedDuration % 60; @@ -328,6 +336,17 @@ export default async function MissionDetailPage({ params }: MissionDetailPagePro )} + {hostLabel && ( +
+ + + + Host + + {hostLabel} + +
+ )} {campaign && ( - + {mission.codeName} {mission.name} @@ -131,7 +139,7 @@ export function MissionCard({ - {operationTypeLabels[mission.operationType] ?? mission.operationType} + {operationTypeLabels[mission.operationType] ?? mission.operationType} Operation )} + {showHost && ( + + + Hosted by {hostLabel} + + )} {campaign && {campaign.name}}