forked from guacsec/trustify-ui
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathRoutes.tsx
More file actions
87 lines (81 loc) · 2.64 KB
/
Routes.tsx
File metadata and controls
87 lines (81 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import React, { Suspense, lazy } from "react";
import { ErrorBoundary } from "react-error-boundary";
import { useParams, useRoutes } from "react-router-dom";
import { Bullseye, Spinner } from "@patternfly/react-core";
import { ErrorFallback } from "./components/ErrorFallback";
const Home = lazy(() => import("./pages/home"));
const AdvisoryList = lazy(() => import("./pages/advisory-list"));
const AdvisoryDetails = lazy(() => import("./pages/advisory-details"));
const VulnerabilityList = lazy(() => import("./pages/vulnerability-list"));
const VulnerabilityDetails = lazy(
() => import("./pages/vulnerability-details"),
);
const PackageList = lazy(() => import("./pages/package-list"));
const PackageDetails = lazy(() => import("./pages/package-details"));
const SBOMList = lazy(() => import("./pages/sbom-list"));
const SBOMDetails = lazy(() => import("./pages/sbom-details"));
const Search = lazy(() => import("./pages/search"));
const ImporterList = lazy(() => import("./pages/importer-list"));
const Upload = lazy(() => import("./pages/upload"));
export enum PathParam {
PRODUCT_ID = "productId",
ADVISORY_ID = "advisoryId",
VULNERABILITY_ID = "vulnerabilityId",
SBOM_ID = "sbomId",
PACKAGE_ID = "packageId",
IMPORTER_ID = "importerId",
}
export const AppRoutes = () => {
const allRoutes = useRoutes([
{ path: "/", element: <Home /> },
{ path: "/advisories", element: <AdvisoryList /> },
{
path: `/advisories/:${PathParam.ADVISORY_ID}`,
element: <AdvisoryDetails />,
},
{ path: "/vulnerabilities", element: <VulnerabilityList /> },
{
path: `/vulnerabilities/:${PathParam.VULNERABILITY_ID}`,
element: <VulnerabilityDetails />,
},
{ path: "/packages", element: <PackageList /> },
{
path: `/packages/:${PathParam.PACKAGE_ID}`,
element: <PackageDetails />,
},
{ path: "/search", element: <Search /> },
{ path: "/sboms", element: <SBOMList /> },
{
path: `/sboms/:${PathParam.SBOM_ID}`,
element: <SBOMDetails />,
},
{
path: `/importers`,
element: <ImporterList />,
},
{ path: "/upload", element: <Upload /> },
]);
return (
<Suspense
fallback={
<Bullseye>
<Spinner />
</Bullseye>
}
>
<ErrorBoundary FallbackComponent={ErrorFallback} key={location.pathname}>
{allRoutes}
</ErrorBoundary>
</Suspense>
);
};
export const useRouteParams = (pathParam: PathParam) => {
const params = useParams();
let value = params[pathParam];
if (value === undefined) {
throw new Error(
`ASSERTION FAILURE: required path parameter not set: ${pathParam}`,
);
}
return value;
};