import React, { useContext, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { Grid, Paper, Collapse, Typography } from '@mui/material'; import { filterOrders } from '../../utils'; import MakerForm from '../../components/MakerForm'; import BookTable from '../../components/BookTable'; import { AppContext, type UseAppStoreType } from '../../contexts/AppContext'; import { NoRobotDialog } from '../../components/Dialogs'; import { FederationContext, type UseFederationStoreType } from '../../contexts/FederationContext'; import { GarageContext, type UseGarageStoreType } from '../../contexts/GarageContext'; const MakerPage = (): JSX.Element => { const { fav, windowSize, navbarHeight } = useContext(AppContext); const { federation, setDelay, setCurrentOrderId } = useContext(FederationContext); const { garage, maker } = useContext(GarageContext); const { t } = useTranslation(); const navigate = useNavigate(); const maxHeight = (windowSize.height - navbarHeight) * 0.85 - 3; const [showMatches, setShowMatches] = useState(false); const [openNoRobot, setOpenNoRobot] = useState(false); const matches = useMemo(() => { return filterOrders({ orders: federation.book, baseFilter: { currency: fav.currency === 0 ? 1 : fav.currency, type: fav.type, mode: fav.mode, coordinator: 'any', }, premium: Number(maker.premium) ?? null, paymentMethods: maker.paymentMethods, amountFilter: { amount: maker.amount, minAmount: maker.minAmount, maxAmount: maker.maxAmount, threshold: 0.7, }, }); }, [ federation.book, fav, maker.premium, maker.amount, maker.minAmount, maker.maxAmount, maker.paymentMethods, ]); const onOrderClicked = function (id: number, shortAlias: string): void { if (garage.getSlot()?.hashId) { setDelay(10000); setCurrentOrderId({ id, shortAlias }); navigate(`/order/${shortAlias}/${id}`); } else { setOpenNoRobot(true); } }; return ( { setOpenNoRobot(false); }} onClickGenerateRobot={() => { navigate('/robot'); }} /> 0 && showMatches}> {t('Existing orders match yours!')} { setCurrentOrderId({ id, shortAlias }); navigate(`/order/${shortAlias}/${id}`); }} disableRequest={matches.length > 0 && !showMatches} collapseAll={showMatches} onSubmit={() => { setShowMatches(matches.length > 0); }} onReset={() => { setShowMatches(false); }} submitButtonLabel={matches.length > 0 && !showMatches ? 'Submit' : 'Create order'} onClickGenerateRobot={() => { navigate('/robot'); }} /> ); }; export default MakerPage;