import { useEffect, useState } from 'react'; import toast from 'react-hot-toast'; // Components import { HiSquare2Stack } from 'react-icons/hi2'; import { HiTrash } from 'react-icons/hi'; import { StyledOperationTable } from './styled'; import Menus from '../../components/Menus/Menus'; import Table from '../../components/Table'; import Direction from '../../commons/styles/Direction'; import Message from '../../components/Message'; // Types import { TUser } from '../../globals/types'; // Constants import { useFetch } from '../../hooks/useFetch'; import { USER_PATH } from '../../constants/path'; import { STATUS_CODE } from '../../constants/statusCode'; import { CONFIRM_DELETE, DELETE_SUCCESS } from '../../constants/messages'; // Styled import Spinner from '../../commons/styles/Spinner'; // Utils import { sendRequest } from '../../helpers/sendRequest'; interface IUserRow { user: TUser; openFormDialog: () => void; setUser: React.Dispatch>; reload: boolean; setReload: React.Dispatch>; } const UserRow = ({ user, openFormDialog, setUser, reload, setReload, }: IUserRow) => { const handleOnEdit = (user: TUser) => { setUser(user); openFormDialog(); }; const handleOnDelete = async (user: TUser) => { if (confirm(CONFIRM_DELETE)) { const response = await sendRequest( USER_PATH + `/${user.id}`, null, 'DELETE', ); if (response.statusCode === STATUS_CODE.OK) { toast.success(DELETE_SUCCESS); // Reload table setReload(!reload); } } }; const { id, name, identifiedCode, phone, roomId } = user; return (
{id}
{name}
{identifiedCode}
{phone}
{roomId}
} onClick={() => handleOnEdit(user)} > Edit } onClick={() => handleOnDelete(user)}> Delete
); }; interface IUserTable { reload: boolean; setReload: React.Dispatch>; openFormDialog: () => void; setUser?: React.Dispatch>; } const UserTable = ({ reload, setReload, openFormDialog, setUser, }: IUserTable) => { const { data, isPending, errorMsg } = useFetch('users', reload); const [users, setUsers] = useState([]); useEffect(() => { if (data) { setUsers(data); } else { setUsers([]); } if (errorMsg) { console.error(errorMsg); } }, [data, errorMsg]); return ( <> {isPending && } {users.length ? (

Sort / Search table

Id
Name
Identified Code
Phone
Room
data={users} render={(user: TUser) => ( )} />
) : ( No data to show here! )} ); }; export default UserTable;