import { IconSearch } from "@tabler/icons-react"; import { useState } from "react"; import Alert from "react-bootstrap/Alert"; import { deleteUser } from "src/api/backend"; import { Button, LoadingPage } from "src/components"; import { useUser, useUsers } from "src/hooks"; import { intl } from "src/locale"; import { DeleteConfirmModal, UserModal } from "src/modals"; import { showSuccess } from "src/notifications"; import Table from "./Table"; export default function TableWrapper() { const [editUserId, setEditUserId] = useState(0 as number | "new"); const [deleteUserId, setDeleteUserId] = useState(0); const { isFetching, isLoading, isError, error, data } = useUsers(["permissions"]); const { data: currentUser } = useUser("me"); if (isLoading) { return ; } if (isError) { return {error?.message || "Unknown error"}; } const handleDelete = async () => { await deleteUser(deleteUserId); showSuccess(intl.formatMessage({ id: "notification.user-deleted" })); }; return (

{intl.formatMessage({ id: "users.title" })}

setEditUserId(id)} onDeleteUser={(id: number) => setDeleteUserId(id)} onNewUser={() => setEditUserId("new")} /> {editUserId ? setEditUserId(0)} /> : null} {deleteUserId ? ( setDeleteUserId(0)} invalidations={[["users"], ["user", deleteUserId]]} > {intl.formatMessage({ id: "user.delete.content" })} ) : null} ); }