diff --git a/site/src/components/VersionsTable/VersionRow.tsx b/site/src/components/VersionsTable/VersionRow.tsx index 52f72169deaa5..6329f2bc0b603 100644 --- a/site/src/components/VersionsTable/VersionRow.tsx +++ b/site/src/components/VersionsTable/VersionRow.tsx @@ -15,12 +15,14 @@ import { combineClasses } from "utils/combineClasses" export interface VersionRowProps { version: TemplateVersion isActive: boolean + isLatest: boolean onPromoteClick?: (templateVersionId: string) => void } export const VersionRow: React.FC = ({ version, isActive, + isLatest, onPromoteClick, }) => { const styles = useStyles() @@ -68,22 +70,24 @@ export const VersionRow: React.FC = ({ - {isActive ? ( - - ) : ( - onPromoteClick && ( + + + {isActive && } + {isLatest && } + {onPromoteClick && ( - ) - )} + )} + diff --git a/site/src/components/VersionsTable/VersionsTable.tsx b/site/src/components/VersionsTable/VersionsTable.tsx index 57e5a256471e3..cb1be9499a5c2 100644 --- a/site/src/components/VersionsTable/VersionsTable.tsx +++ b/site/src/components/VersionsTable/VersionsTable.tsx @@ -29,13 +29,27 @@ export const VersionsTable: FC> = ({ onPromoteClick, activeVersionId, }) => { + const latestVersionId = versions?.reduce( + (latestSoFar, against) => { + if (!latestSoFar) { + return against + } + + return new Date(against.updated_at).getTime() > + new Date(latestSoFar.updated_at).getTime() + ? against + : latestSoFar + }, + undefined as TypesGen.TemplateVersion | undefined, + )?.id + return ( {versions ? ( new Date(version.created_at)} row={(version) => ( > = ({ version={version} key={version.id} isActive={activeVersionId === version.id} + isLatest={latestVersionId === version.id} /> )} />