https://dev.kronoz.win/r/marzneshin.git
1import {
2 createFileRoute,
3 Outlet,
4} from "@tanstack/react-router";
5import { useSuspenseQuery } from "@tanstack/react-query";
6import { queryClient } from "@marzneshin/common/utils";
7import {
8 RouterAdminContext,
9 adminQueryOptions,
10} from "@marzneshin/modules/admins";
11import { Suspense, useMemo } from "react";
12import {
13 AlertDialog,
14 AlertDialogContent,
15} from "@marzneshin/common/components";
16
17const AdminProvider = () => {
18 const { username } = Route.useLoaderData()
19 const { data: admin, isPending } = useSuspenseQuery(adminQueryOptions({ username }))
20 const value = useMemo(() => ({ admin, isPending }), [admin, isPending])
21 return (
22 <RouterAdminContext.Provider value={value}>
23 <Suspense>
24 <Outlet />
25 </Suspense>
26 </RouterAdminContext.Provider>
27 )
28}
29
30export const Route = createFileRoute('/_dashboard/admins/$adminId')({
31 loader: async ({ params }) => {
32 queryClient.ensureQueryData(adminQueryOptions({ username: params.adminId }))
33 return { username: params.adminId };
34 },
35 errorComponent: () => (
36 <AlertDialog open={true}>
37 <AlertDialogContent>Admin not found</AlertDialogContent>
38 </AlertDialog>
39 ),
40 component: AdminProvider,
41})