import { FC, useState } from 'react' import { useTranslation } from 'react-i18next' import Button from '../../components/Button' import { Add, Eye } from 'iconsax-react' import Input from '../../components/Input' import Td from '../../components/Td' import { Link, useNavigate } from 'react-router-dom' import { Pages } from '../../config/Pages' import { useDeleteUser, useGetUsers } from './hooks/useUserData' import { UserItemType } from './types/UserTypes' import PageLoading from '../../components/PageLoading' import { toast } from '../../components/Toast'; import { ErrorType } from '../../helpers/types' import Pagination from '../../components/Pagination' import TrashWithConfrim from '../../components/TrashWithConfrim' import { usePermissions } from '../../hooks/usePermissions' const UsersList: FC = () => { const navigate = useNavigate() const { t } = useTranslation('global') const { canCreate, canUpdate, canDelete } = usePermissions() const [page, setPage] = useState(1) const [search, setSearch] = useState('') const getUsers = useGetUsers(search, undefined, page) const deleteUser = useDeleteUser() const handleDeleteUser = (id: string) => { deleteUser.mutate(id, { onSuccess: () => { toast(t('success'), 'success') getUsers.refetch() }, onError: (error: ErrorType) => { toast(error.response?.data?.error?.message[0], 'error') } }) } return (
{t('user.users_list')}
{canCreate('admins') && (
)}
setSearch(value)} />
{ getUsers.isPending ? :
{ getUsers.data?.data?.users?.map((item: UserItemType) => { return ( ) }) }
{ item.roles.map((role) => (
{role.name}
)) }
{canUpdate('admins') && ( )} {canDelete('admins') && ( handleDeleteUser(item.id)} isLoading={deleteUser.isPending} /> )}
}
) } export default UsersList