import React, { Suspense, useState } from 'react'; import { Button } from '@patternfly/react-core'; import useChrome from '@redhat-cloud-services/frontend-components/useChrome'; import { useLoadModule, useScalprum } from '@scalprum/react-core'; import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; import ImageLinkDirect from './ImageLinkDirect'; import { selectImageById } from '../../store/composesSlice'; const getImageProvider = ({ imageType }) => { switch (imageType) { case 'aws' || 'ami': return 'aws'; default: 'aws'; } }; const ProvisioningLink = ({ imageId, isExpired, isInClonesTable }) => { const image = useSelector((state) => selectImageById(state, imageId)); const [wizardOpen, openWizard] = useState(false); const [{ default: ProvisioningWizard }, error] = useLoadModule( { appName: 'provisioning', // optional scope: 'provisioning', module: './ProvisioningWizard', // processor: (val) => val, // optional }, {}, {} ); const provider = getImageProvider(image); if (!error) { return ( {wizardOpen && ( openWizard(false)} image={{ name: image.imageName, id: image.id, architecture: image.architecture, provider: provider, }} /> )} ); } return ( ); }; const ImageLink = ({ imageId, isExpired, isInClonesTable }) => { const image = useSelector((state) => selectImageById(state, imageId)); const uploadStatus = image.uploadStatus; const { initialized: chromeInitialized, isBeta, getEnvironment, } = useChrome(); const scalprum = useScalprum(); const hasProvisioning = chromeInitialized && scalprum.config?.provisioning && (isBeta() || getEnvironment() === 'qa'); if (!uploadStatus || image.status !== 'success') return null; if ( hasProvisioning && (image.imageType === 'aws' || image.imageType === 'ami') ) { if (isInClonesTable) { return null; } return ( ); } return ( ); }; ProvisioningLink.propTypes = { imageId: PropTypes.string, isExpired: PropTypes.bool, isInClonesTable: PropTypes.bool, }; ImageLink.propTypes = { imageId: PropTypes.string.isRequired, isExpired: PropTypes.bool, isInClonesTable: PropTypes.bool, }; export default ImageLink;