import React, { useContext, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useHistory } 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, AppContextProps } from '../../contexts/AppContext'; import { NoRobotDialog } from '../../components/Dialogs'; const MakerPage = (): JSX.Element => { const { robot, book, fav, maker, clearOrder, windowSize, setCurrentOrder, navbarHeight, setPage, setOrder, setDelay, } = useContext(AppContext); const { t } = useTranslation(); const history = useHistory(); const maxHeight = (windowSize.height - navbarHeight) * 0.85 - 3; const [showMatches, setShowMatches] = useState(false); const [openNoRobot, setOpenNoRobot] = useState(false); const matches = useMemo(() => { return filterOrders({ orders: book.orders, baseFilter: { currency: fav.currency === 0 ? 1 : fav.currency, type: fav.type, mode: fav.mode, }, paymentMethods: maker.paymentMethods, amountFilter: { amount: maker.amount, minAmount: maker.minAmount, maxAmount: maker.maxAmount, threshold: 0.7, }, }); }, [book.orders, fav, maker.amount, maker.minAmount, maker.maxAmount]); const onViewOrder = function () { setOrder(undefined); setDelay(10000); }; const onOrderClicked = function (id: number) { if (robot.avatarLoaded) { history.push('/order/' + id); setPage('order'); setCurrentOrder(id); onViewOrder(); } else { setOpenNoRobot(true); } }; return ( setOpenNoRobot(false)} setPage={setPage} /> 0 && showMatches}> {t('Existing orders match yours!')} { clearOrder(); setCurrentOrder(id); setPage('order'); history.push('/order/' + id); }} hasRobot={robot.avatarLoaded} disableRequest={matches.length > 0 && !showMatches} collapseAll={showMatches} onSubmit={() => setShowMatches(matches.length > 0)} onReset={() => setShowMatches(false)} submitButtonLabel={matches.length > 0 && !showMatches ? 'Submit' : 'Create order'} /> ); }; export default MakerPage;