gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/routes/_dashboard/hosts/$hostId.tsx · v0.7.4
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 RouterHostContext,
9 03b3dbc Mardin 2y ago fetchHost,
10 d636f3f Dawsh 2y ago } from "@marzneshin/modules/hosts";
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 4056c66 Dawsh 1y ago AlertDialogTitle,
16 03b3dbc Mardin 2y ago Loading
17 7389ad0 Mardin 2y ago } from "@marzneshin/common/components";
18 03b3dbc Mardin 2y ago
19 03b3dbc Mardin 2y ago const HostProvider = () => {
20 03b3dbc Mardin 2y ago const { host } = Route.useLoaderData()
21 03b3dbc Mardin 2y ago return (
22 03b3dbc Mardin 2y ago <Suspense fallback={<Loading />}>
23 03b3dbc Mardin 2y ago <Await promise={host}>
24 03b3dbc Mardin 2y ago {(host) => (
25 03b3dbc Mardin 2y ago <RouterHostContext.Provider value={{ host }}>
26 03b3dbc Mardin 2y ago <Suspense>
27 03b3dbc Mardin 2y ago <Outlet />
28 03b3dbc Mardin 2y ago </Suspense>
29 03b3dbc Mardin 2y ago </RouterHostContext.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/hosts/$hostId')({
37 03b3dbc Mardin 2y ago loader: async ({ params }) => {
38 03b3dbc Mardin 2y ago const hostPromise = fetchHost({
39 03b3dbc Mardin 2y ago queryKey: ["hosts", Number.parseInt(params.hostId)]
40 03b3dbc Mardin 2y ago });
41 03b3dbc Mardin 2y ago
42 03b3dbc Mardin 2y ago return {
43 03b3dbc Mardin 2y ago host: defer(hostPromise)
44 03b3dbc Mardin 2y ago }
45 03b3dbc Mardin 2y ago },
46 03b3dbc Mardin 2y ago errorComponent: () => (
47 03b3dbc Mardin 2y ago <AlertDialog open={true}>
48 4056c66 Dawsh 1y ago <AlertDialogContent>
49 4056c66 Dawsh 1y ago <AlertDialogTitle>
50 4056c66 Dawsh 1y ago Host not found
51 4056c66 Dawsh 1y ago </AlertDialogTitle>
52 4056c66 Dawsh 1y ago </AlertDialogContent>
53 03b3dbc Mardin 2y ago </AlertDialog>
54 03b3dbc Mardin 2y ago ),
55 03b3dbc Mardin 2y ago component: HostProvider,
56 03b3dbc Mardin 2y ago })