import { DateTime, DateTimeAccurate } from "~/components/primitives/DateTime"; import { Paragraph } from "~/components/primitives/Paragraph"; import * as Property from "~/components/primitives/PropertyTable"; import { TextLink } from "~/components/primitives/TextLink"; import { useEnvironment } from "~/hooks/useEnvironment"; import { useOrganization } from "~/hooks/useOrganizations"; import { useProject } from "~/hooks/useProject"; import { type WaitpointDetail } from "~/presenters/v3/WaitpointPresenter.server"; import { ForceTimeout } from "~/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route"; import { v3WaitpointTokenPath, v3WaitpointTokensPath } from "~/utils/pathBuilder"; import { PacketDisplay } from "./PacketDisplay"; import { WaitpointStatusCombo } from "./WaitpointStatus"; import { RunTag } from "./RunTag"; import { ClipboardField } from "~/components/primitives/ClipboardField"; export function WaitpointDetailTable({ waitpoint, linkToList = false, }: { waitpoint: WaitpointDetail; linkToList?: boolean; }) { const organization = useOrganization(); const project = useProject(); const environment = useEnvironment(); const hasExpired = waitpoint.idempotencyKeyExpiresAt && waitpoint.idempotencyKeyExpiresAt < new Date(); return ( Status ID {linkToList ? ( {waitpoint.id} ) : ( waitpoint.id )} {waitpoint.type === "MANUAL" && ( Callback URL )} Idempotency key
{waitpoint.userProvidedIdempotencyKey ? (waitpoint.inactiveIdempotencyKey ?? waitpoint.idempotencyKey) : "–"}
{waitpoint.idempotencyKeyExpiresAt ? ( <> {hasExpired ? "Expired" : "Expires at"}:{" "} ) : null}
{waitpoint.type === "MANUAL" && ( <> Timeout
{waitpoint.completedAfter ? ( <> ) : ( "–" )} {waitpoint.status === "WAITING" && }
{waitpoint.status === "TIMED_OUT" ? "The waitpoint timed out" : waitpoint.status === "COMPLETED" ? "The waitpoint completed before this timeout was reached" : "The waitpoint is still waiting"}
Tags
{waitpoint.tags.map((tag) => ( ))}
)} Completed {waitpoint.completedAt ? : "–"} {waitpoint.status === "WAITING" ? null : waitpoint.status === "TIMED_OUT" ? ( <> ) : waitpoint.output ? ( ) : waitpoint.completedAfter ? null : ( "Completed with no output" )}
); }