import { useCallback, useEffect, useState } from 'react'; import { Auction, Project } from 'gql-client'; import { Dialog, DialogTitle, DialogContent, DialogActions, } from '@mui/material'; import { CheckRoundFilledIcon, LoadingIcon } from 'components/shared/CustomIcon'; import { useGQLClient } from 'context/GQLClientContext'; import { Button, Heading, Tag } from 'components/shared'; const CHECK_AUCTION_STATUS_INTERVAL = 2000; export const AuctionCard = ({ project }: { project: Project }) => { const [auctionStatus, setAuctionStatus] = useState(''); const [deployerLrns, setDeployerLrns] = useState([]); const [auctionDetails, setAuctionDetails] = useState(null); const [openDialog, setOpenDialog] = useState(false); const client = useGQLClient(); const getIconByAuctionStatus = (status: string) => status === 'completed' ? : ; const checkAuctionStatus = useCallback(async () => { const result = await client.getAuctionData(project.auctionId); setAuctionStatus(result.status); setAuctionDetails(result); setDeployerLrns(project.deployerLrn); }, [client, project.auctionId, project.deployerLrn]); useEffect(() => { if (auctionStatus !== 'completed') { const intervalId = setInterval(checkAuctionStatus, CHECK_AUCTION_STATUS_INTERVAL); checkAuctionStatus(); return () => clearInterval(intervalId); } }, [auctionStatus, checkAuctionStatus]); const renderAuctionStatus = useCallback( () => ( {auctionStatus.toUpperCase()} ), [auctionStatus] ); const handleOpenDialog = () => setOpenDialog(true); const handleCloseDialog = () => setOpenDialog(false); return ( <>
Auction details
Auction Status
{renderAuctionStatus()}
Auction Id {project.auctionId}
{project.deployerLrn && (
Deployer LRNs {deployerLrns.map((lrn, index) => (

{'\u2022'} {lrn}

))}
)}
Auction Details {auctionDetails && (
{JSON.stringify(auctionDetails, null, 2)}
)}
); };