import { useSearchParams } from 'react-router-dom'; import { Dispatch, SetStateAction, useEffect, useState } from 'react'; // Components 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 { IUser } from '../../types/users'; // Hooks import { useFetch } from '../../hooks/useFetch'; // Constants import { ORDERBY_OPTIONS, USER_PAGE } from '../../constants/variables'; // Styled import { StyledOperationTable } from './styled'; import Spinner from '../../commons/styles/Spinner'; import UserRow from './UserRow'; interface IUserTable { reload: boolean; setReload: Dispatch>; } const UserTable = ({ reload, setReload }: IUserTable) => { const [users, setUsers] = useState([]); const [phoneSearch, setPhoneSearch] = useState(''); const [searchParams] = useSearchParams(); const sortByValue = searchParams.get('sortBy') ? searchParams.get('sortBy')! : ''; const orderByValue = searchParams.get('orderBy') ? searchParams.get('orderBy')! : ''; const { data, isPending, errorFetchMsg } = useFetch( 'users', 'phone', phoneSearch, sortByValue, orderByValue, reload ); useEffect(() => { if (data) { setUsers(data); } else { setUsers([]); } if (errorFetchMsg) { console.error(errorFetchMsg); } }, [data, errorFetchMsg, setUsers]); return ( <> {isPending && } {users.length ? (
Id
Name
Identified Code
Phone
Room Id
data={users} render={(user: IUser) => ( )} />
) : ( !isPending && No data to show here! )}
); }; export default UserTable;