gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/routes/_dashboard/users/$userId.tsx · v0.4.1
Source
1 03b3dbc Mardin 2y ago import {
2 03b3dbc Mardin 2y ago createFileRoute,
3 03b3dbc Mardin 2y ago Outlet,
4 03b3dbc Mardin 2y ago } from "@tanstack/react-router";
5 d377c4c Dawsh 2y ago import { useSuspenseQuery } from "@tanstack/react-query";
6 d377c4c Dawsh 2y ago import { queryClient } from "@marzneshin/utils";
7 03b3dbc Mardin 2y ago import {
8 03b3dbc Mardin 2y ago RouterUserContext,
9 d377c4c Dawsh 2y ago userQueryOptions,
10 03b3dbc Mardin 2y ago } from "@marzneshin/features/users";
11 d377c4c Dawsh 2y ago import { Suspense, useMemo } from "react";
12 03b3dbc Mardin 2y ago import {
13 03b3dbc Mardin 2y ago AlertDialog,
14 03b3dbc Mardin 2y ago AlertDialogContent,
15 03b3dbc Mardin 2y ago } from "@marzneshin/components";
16 03b3dbc Mardin 2y ago
17 03b3dbc Mardin 2y ago const UserProvider = () => {
18 d377c4c Dawsh 2y ago const { username } = Route.useLoaderData()
19 d377c4c Dawsh 2y ago const { data: user, isPending } = useSuspenseQuery(userQueryOptions({ username }))
20 d377c4c Dawsh 2y ago const value = useMemo(() => ({ user, isPending }), [user, isPending])
21 03b3dbc Mardin 2y ago return (
22 f2e32b5 Mardin 2y ago <RouterUserContext.Provider value={value}>
23 d377c4c Dawsh 2y ago <Suspense>
24 d377c4c Dawsh 2y ago <Outlet />
25 d377c4c Dawsh 2y ago </Suspense>
26 d377c4c Dawsh 2y ago </RouterUserContext.Provider>
27 03b3dbc Mardin 2y ago )
28 03b3dbc Mardin 2y ago }
29 03b3dbc Mardin 2y ago
30 03b3dbc Mardin 2y ago export const Route = createFileRoute('/_dashboard/users/$userId')({
31 03b3dbc Mardin 2y ago loader: async ({ params }) => {
32 d377c4c Dawsh 2y ago queryClient.ensureQueryData(userQueryOptions({ username: params.userId }))
33 d377c4c Dawsh 2y ago return { username: params.userId };
34 03b3dbc Mardin 2y ago },
35 03b3dbc Mardin 2y ago errorComponent: () => (
36 03b3dbc Mardin 2y ago <AlertDialog open={true}>
37 03b3dbc Mardin 2y ago <AlertDialogContent>User not found</AlertDialogContent>
38 03b3dbc Mardin 2y ago </AlertDialog>
39 03b3dbc Mardin 2y ago ),
40 03b3dbc Mardin 2y ago component: UserProvider,
41 03b3dbc Mardin 2y ago })