import { createFileRoute, Outlet, Link, redirect, useLocation } from "@tanstack/react-router"; import { useQuery } from "@tanstack/react-query"; import { authClient } from "@/lib/auth-client"; import { trpc } from "@/utils/trpc"; import { MaterialIcon } from "@/components/ui/MaterialIcon"; import { routeShell } from "@/lib/route-shell"; export const Route = createFileRoute("/admin")({ staticData: routeShell.fullscreen, component: AdminLayout, beforeLoad: async () => { const session = await authClient.getSession(); if (!session.data) { throw redirect({ to: "/login" }); } return { session }; }, }); const adminNavItems = [ { to: "/admin", label: "Dashboard", icon: "dashboard" }, { to: "/admin/users", label: "Users", icon: "group" }, { to: "/admin/featured", label: "Featured", icon: "star" }, { to: "/admin/credits", label: "Credits", icon: "token" }, { to: "/admin/jobs", label: "Jobs", icon: "schedule" }, { to: "/admin/moderation", label: "Moderation", icon: "shield" }, ]; function AdminLayout() { const location = useLocation(); const { data: isAdminData, isLoading } = useQuery( trpc.admin.isAdmin.queryOptions(), ); if (isLoading) { return (
progress_activity
); } if (!isAdminData?.isAdmin) { return (

Access Denied

Only admins can access this page.

Back to Dashboard
); } return (
); }