import { useSearchParams } from 'react-router-dom'; import { Dispatch, SetStateAction, useEffect, useState } from 'react'; // Components import { StyledOperationTable } from './styled'; import Menus from '../../components/Menus'; import Table from '../../components/Table'; import Direction from '../../commons/styles/Direction'; import Message from '../../components/Message'; import Search from '../../components/Search'; import SortBy from '../../components/SortBy'; import OrderBy from '../../components/OrderBy'; // Types import { IRoom } from '../../types/rooms'; // Constants import { useFetch } from '../../hooks/useFetch'; import { ORDERBY_OPTIONS, ROOM_PAGE } from '../../constants/variables'; // Styled import Spinner from '../../commons/styles/Spinner'; import RoomRow from './RoomRow'; interface IRoomTable { reload: boolean; setReload: Dispatch>; } const RoomTable = ({ reload, setReload }: IRoomTable) => { const [nameSearch, setNameSearch] = useState(''); const [searchParams] = useSearchParams(); const [rooms, setRooms] = useState([]); const sortByValue = searchParams.get('sortBy') ? searchParams.get('sortBy')! : ''; const orderByValue = searchParams.get('orderBy') ? searchParams.get('orderBy')! : ''; const { data, isPending, errorFetchMsg } = useFetch( 'rooms', 'name', nameSearch, sortByValue, orderByValue, reload ); useEffect(() => { if (data) { setRooms(data); } else { setRooms([]); } if (errorFetchMsg) { console.error(errorFetchMsg); } }, [data, errorFetchMsg]); return ( <> {isPending && } {rooms.length ? (
Id
Name
Price
Status
data={rooms} render={(room: IRoom) => ( )} />
) : ( !isPending && No data to show here! )}
); }; export default RoomTable;