gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/routes/_dashboard/nodes/$nodeId.tsx · v0.6.1
Source
1 03b3dbc Mardin 2y ago import {
2 03b3dbc Mardin 2y ago createFileRoute,
3 03b3dbc Mardin 2y ago defer,
4 03b3dbc Mardin 2y ago Await,
5 03b3dbc Mardin 2y ago Outlet
6 03b3dbc Mardin 2y ago } from "@tanstack/react-router";
7 03b3dbc Mardin 2y ago import {
8 03b3dbc Mardin 2y ago fetchNode,
9 03b3dbc Mardin 2y ago RouterNodeContext
10 78a3e64 Dawsh 2y ago } from "@marzneshin/modules/nodes";
11 03b3dbc Mardin 2y ago import { Suspense } 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 Loading,
16 03b3dbc Mardin 2y ago } from "@marzneshin/components";
17 03b3dbc Mardin 2y ago
18 03b3dbc Mardin 2y ago const NodeProvider = () => {
19 03b3dbc Mardin 2y ago const { node } = Route.useLoaderData()
20 03b3dbc Mardin 2y ago
21 03b3dbc Mardin 2y ago return (
22 03b3dbc Mardin 2y ago <Suspense fallback={<Loading />}>
23 03b3dbc Mardin 2y ago <Await promise={node}>
24 03b3dbc Mardin 2y ago {(node) => (
25 03b3dbc Mardin 2y ago <RouterNodeContext.Provider value={{ node }}>
26 03b3dbc Mardin 2y ago <Suspense>
27 03b3dbc Mardin 2y ago <Outlet />
28 03b3dbc Mardin 2y ago </Suspense>
29 03b3dbc Mardin 2y ago </RouterNodeContext.Provider>
30 03b3dbc Mardin 2y ago )}
31 03b3dbc Mardin 2y ago </Await>
32 03b3dbc Mardin 2y ago </Suspense>
33 03b3dbc Mardin 2y ago );
34 03b3dbc Mardin 2y ago };
35 03b3dbc Mardin 2y ago
36 03b3dbc Mardin 2y ago export const Route = createFileRoute('/_dashboard/nodes/$nodeId')({
37 03b3dbc Mardin 2y ago loader: async ({ params }) => {
38 03b3dbc Mardin 2y ago const nodePromise = fetchNode({
39 03b3dbc Mardin 2y ago queryKey: ["nodes", Number.parseInt(params.nodeId)]
40 03b3dbc Mardin 2y ago });
41 03b3dbc Mardin 2y ago
42 03b3dbc Mardin 2y ago return {
43 03b3dbc Mardin 2y ago node: defer(nodePromise)
44 03b3dbc Mardin 2y ago }
45 03b3dbc Mardin 2y ago },
46 03b3dbc Mardin 2y ago component: NodeProvider,
47 03b3dbc Mardin 2y ago errorComponent: () => (
48 03b3dbc Mardin 2y ago <AlertDialog open={true}>
49 03b3dbc Mardin 2y ago <AlertDialogContent>Node not found</AlertDialogContent>
50 03b3dbc Mardin 2y ago </AlertDialog>
51 03b3dbc Mardin 2y ago ),
52 03b3dbc Mardin 2y ago })