import React, { useEffect, useState } from 'react'; import { ClipboardCopy } from '@patternfly/react-core'; import { Table, Tbody, Td, Th, Thead, Tr } from '@patternfly/react-table'; import { StatusClone, AwsDetailsStatus } from './Status'; import { ClonesResponseItem, ComposesResponseItem, UploadStatus, useGetCloneStatusQuery, useGetComposeClonesQuery, useGetComposeStatusQuery, } from '../../store/imageBuilderApi'; type RowPropTypes = { ami: JSX.Element; region: JSX.Element; status: JSX.Element; }; type AmiPropTypes = { status: UploadStatus | undefined; }; const Ami = ({ status }: AmiPropTypes) => { switch (status?.status) { case 'success': return ( {'ami' in status.options ? status.options.ami : ''} ); default: return undefined; } }; const ComposeRegion = () => { return

us-east-1

; }; type CloneRegionPropTypes = { region: string; }; const CloneRegion = ({ region }: CloneRegionPropTypes) => { return

{region}

; }; const Row = ({ ami, region, status }: RowPropTypes) => { return ( {ami} {region} {status} ); }; type CloneRowPropTypes = { clone: ClonesResponseItem; }; const CloneRow = ({ clone }: CloneRowPropTypes) => { const [pollingInterval, setPollingInterval] = useState(8000); const { data: status } = useGetCloneStatusQuery( { id: clone.id, }, { pollingInterval: pollingInterval } ); useEffect(() => { if (status?.status === 'success' || status?.status === 'failure') { setPollingInterval(0); } else { setPollingInterval(8000); } }, [setPollingInterval, status]); return ( } region={} status={} /> ); }; type ComposeRowPropTypes = { compose: ComposesResponseItem; }; const ComposeRow = ({ compose }: ComposeRowPropTypes) => { const { data, isSuccess } = useGetComposeStatusQuery({ composeId: compose.id, }); return isSuccess ? ( } region={} status={} /> ) : null; }; export type ReducedClonesByRegion = { [region: string]: { clone: ClonesResponseItem; status: UploadStatus | undefined; }; }; type ClonesTablePropTypes = { compose: ComposesResponseItem; }; const ClonesTable = ({ compose }: ClonesTablePropTypes) => { const { data } = useGetComposeClonesQuery({ composeId: compose.id }); return ( {data?.data.map((clone) => ( ))}
AMI Region Status
); }; export default ClonesTable;