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 (
| AMI |
Region |
Status |
{data?.data.map((clone) => (
))}
);
};
export default ClonesTable;