import { useSuspenseQuery } from "@tanstack/react-query" import { createFileRoute, redirect } from "@tanstack/react-router" import { Suspense } from "react" import { type UserPublic, UsersService } from "@/client" import AddUser from "@/components/Admin/AddUser" import { columns, type UserTableData } from "@/components/Admin/columns" import { DataTable } from "@/components/Common/DataTable" import PendingUsers from "@/components/Pending/PendingUsers" import useAuth from "@/hooks/useAuth" function getUsersQueryOptions() { return { queryFn: async () => (await UsersService.readUsers({ query: { skip: 0, limit: 100 } })).data, queryKey: ["users"], } } export const Route = createFileRoute("/_layout/admin")({ component: Admin, beforeLoad: async () => { const { data: user } = await UsersService.readUserMe() if (!user.is_superuser) { throw redirect({ to: "/", }) } }, head: () => ({ meta: [ { title: "Admin - FastAPI Template", }, ], }), }) function UsersTableContent() { const { user: currentUser } = useAuth() const { data: users } = useSuspenseQuery(getUsersQueryOptions()) const tableData: UserTableData[] = users.data.map((user: UserPublic) => ({ ...user, isCurrentUser: currentUser?.id === user.id, })) return } function UsersTable() { return ( }> ) } function Admin() { return (

Users

Manage user accounts and permissions

) }