import { isEmpty } from 'lodash'; import React from 'react'; import { ArtifactCollapsibleSection } from './ArtifactCollapsibleSection'; import { Constraints } from './Constraints'; import { VersionTitle } from './VersionTitle'; import { ArtifactActions } from '../../artifactActions/ArtifactActions'; import type { QueryArtifact, QueryArtifactVersion } from '../types'; import { useCreateVersionRollbackActions } from './useCreateRollbackActions.hook'; import { extractVersionRollbackDetails, isVersionVetoed } from './utils'; import { useLogEvent } from '../../utils/logging'; import type { VersionMessageData } from '../../versionMetadata/MetadataComponents'; import { toPinnedMetadata } from '../../versionMetadata/MetadataComponents'; import { getBaseMetadata, getVersionCompareLinks, VersionMetadata } from '../../versionMetadata/VersionMetadata'; export interface IPendingVersionsProps { artifact: QueryArtifact; title: string; versions?: QueryArtifactVersion[]; isDeploying?: boolean; } const NUM_VERSIONS_WHEN_COLLAPSED = 1; export const ArtifactVersions = ({ artifact, versions, title, isDeploying }: IPendingVersionsProps) => { const numVersions = versions?.length || 0; const [isExpanded, setIsExpanded] = React.useState(false); const logEvent = useLogEvent('ArtifactPendingVersion'); if (!versions || !numVersions) return null; const versionsToShow = isExpanded ? versions : versions.slice(0, NUM_VERSIONS_WHEN_COLLAPSED); const { pinnedVersion } = artifact; return (
{versionsToShow.map((version, index) => ( ))} {numVersions > NUM_VERSIONS_WHEN_COLLAPSED ? (
) : undefined}
); }; interface IPendingVersionProps { data: QueryArtifactVersion; reference: string; environment: string; pinned?: VersionMessageData; index: number; } const PendingVersion = ({ data, reference, environment, pinned, index }: IPendingVersionProps) => { const { version, gitMetadata, constraints, isCurrent } = data; const actions = useCreateVersionRollbackActions({ environment, reference, version, isVetoed: isVersionVetoed(data), isPinned: Boolean(pinned), isCurrent, selectedVersion: extractVersionRollbackDetails(data), }); return (
{constraints && !isEmpty(constraints) && ( )}
); };