Rename console core & create dedicated relay env providers

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-20 22:11:45 +01:00
committed by Bryan Frimin
parent c2a5197459
commit e5c2ce0337
22 changed files with 585 additions and 327 deletions

View File

@@ -7,12 +7,12 @@ const store = new Store(source, {
gcReleaseBufferSize: 20, gcReleaseBufferSize: 20,
}); });
export const consoleEnvironment = new Environment({ export const coreEnvironment = new Environment({
network: Network.create(makeFetchQuery("/api/console/v1/graphql")), network: Network.create(makeFetchQuery("/api/console/v1/graphql")),
store, store,
}); });
export const connectEnvironment = new Environment({ export const iamEnvironment = new Environment({
network: Network.create(makeFetchQuery("/api/connect/v1/graphql")), network: Network.create(makeFetchQuery("/api/connect/v1/graphql")),
store, store,
}); });

View File

@@ -1,19 +1,15 @@
import { import { usePreloadedQuery, type PreloadedQuery } from "react-relay";
RelayEnvironmentProvider,
usePreloadedQuery,
type PreloadedQuery,
} from "react-relay";
import { organizationLayoutQuery } from "./OrganizationLayoutQuery"; import { organizationLayoutQuery } from "./OrganizationLayoutQuery";
import { Link, Outlet } from "react-router"; import { Link, Outlet } from "react-router";
import { Badge, Button, IconPeopleAdd, Layout, Skeleton } from "@probo/ui"; import { Badge, Button, IconPeopleAdd, Layout, Skeleton } from "@probo/ui";
import { Sidebar } from "./_components/Sidebar"; import { Sidebar } from "./_components/Sidebar";
import { OrganizationDropdown } from "./_components/OrganizationDropdown"; import { OrganizationDropdown } from "./_components/OrganizationDropdown";
import { consoleEnvironment } from "/environments";
import type { OrganizationLayoutQuery } from "./__generated__/OrganizationLayoutQuery.graphql"; import type { OrganizationLayoutQuery } from "./__generated__/OrganizationLayoutQuery.graphql";
import { PermissionsProvider } from "/providers/PermissionsProvider"; import { PermissionsProvider } from "/providers/PermissionsProvider";
import { SessionDropdown } from "./_components/SessionDropdown"; import { SessionDropdown } from "./_components/SessionDropdown";
import { Suspense } from "react"; import { Suspense } from "react";
import { useTranslate } from "@probo/i18n"; import { useTranslate } from "@probo/i18n";
import { CoreRelayProvider } from "/providers/CoreRelayProvider";
interface OrganizationLayoutProps { interface OrganizationLayoutProps {
queryRef: PreloadedQuery<OrganizationLayoutQuery>; queryRef: PreloadedQuery<OrganizationLayoutQuery>;
@@ -59,9 +55,9 @@ export default function OrganizationLayout(props: OrganizationLayoutProps) {
} }
sidebar={<Sidebar />} sidebar={<Sidebar />}
> >
<RelayEnvironmentProvider environment={consoleEnvironment}> <CoreRelayProvider>
<Outlet /> <Outlet />
</RelayEnvironmentProvider> </CoreRelayProvider>
</Layout> </Layout>
</PermissionsProvider> </PermissionsProvider>
); );

View File

@@ -0,0 +1,7 @@
import type { ReactNode } from "react";
import { RelayEnvironmentProvider } from "react-relay";
import { coreEnvironment } from "/environments";
export function CoreRelayProvider(props: { children: ReactNode }) {
return <RelayEnvironmentProvider environment={coreEnvironment} {...props} />;
}

View File

@@ -0,0 +1,7 @@
import type { ReactNode } from "react";
import { RelayEnvironmentProvider } from "react-relay";
import { iamEnvironment } from "/environments";
export function IAMRelayProvider(props: { children: ReactNode }) {
return <RelayEnvironmentProvider environment={iamEnvironment} {...props} />;
}

View File

@@ -41,8 +41,7 @@ import { employeeDocumentSignatureQuery } from "./pages/organizations/employee/E
import { Role } from "@probo/helpers"; import { Role } from "@probo/helpers";
import { PermissionsContext } from "./providers/PermissionsContext"; import { PermissionsContext } from "./providers/PermissionsContext";
import { use } from "react"; import { use } from "react";
import { RelayEnvironmentProvider } from "react-relay"; import { coreEnvironment } from "./environments.ts";
import { connectEnvironment, consoleEnvironment } from "./environments.ts";
import { import {
ForbiddenError, ForbiddenError,
UnAuthenticatedError, UnAuthenticatedError,
@@ -50,6 +49,7 @@ import {
} from "@probo/relay"; } from "@probo/relay";
import { OrganizationsPageQuery } from "./pages/iam/organizations/OrganizationsPageQuery.tsx"; import { OrganizationsPageQuery } from "./pages/iam/organizations/OrganizationsPageQuery.tsx";
import { OrganizationLayoutQuery } from "./pages/iam/organizations/OrganizationLayoutQuery.tsx"; import { OrganizationLayoutQuery } from "./pages/iam/organizations/OrganizationLayoutQuery.tsx";
import { IAMRelayProvider } from "./providers/IAMRelayProvider.tsx";
const NewOrganizationPage = lazy( const NewOrganizationPage = lazy(
() => import("./pages/iam/organizations/NewOrganizationPage"), () => import("./pages/iam/organizations/NewOrganizationPage"),
@@ -80,9 +80,9 @@ const routes = [
{ {
path: "/auth", path: "/auth",
Component: () => ( Component: () => (
<RelayEnvironmentProvider environment={connectEnvironment}> <IAMRelayProvider>
<AuthLayout /> <AuthLayout />
</RelayEnvironmentProvider> </IAMRelayProvider>
), ),
children: [ children: [
{ {
@@ -120,17 +120,17 @@ const routes = [
{ {
index: true, index: true,
Component: () => ( Component: () => (
<RelayEnvironmentProvider environment={connectEnvironment}> <IAMRelayProvider>
<OrganizationsPageQuery /> <OrganizationsPageQuery />
</RelayEnvironmentProvider> </IAMRelayProvider>
), ),
}, },
{ {
path: "organizations/new", path: "organizations/new",
Component: () => ( Component: () => (
<RelayEnvironmentProvider environment={connectEnvironment}> <IAMRelayProvider>
<NewOrganizationPage /> <NewOrganizationPage />
</RelayEnvironmentProvider> </IAMRelayProvider>
), ),
}, },
{ {
@@ -154,7 +154,7 @@ const routes = [
path: "", path: "",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery(consoleEnvironment, employeeDocumentsQuery, { loadQuery(coreEnvironment, employeeDocumentsQuery, {
organizationId: organizationId!, organizationId: organizationId!,
}), }),
), ),
@@ -170,7 +170,7 @@ const routes = [
Fallback: PageSkeleton, Fallback: PageSkeleton,
ErrorBoundary: ErrorBoundary, ErrorBoundary: ErrorBoundary,
loader: loaderFromQueryLoader(({ documentId }) => loader: loaderFromQueryLoader(({ documentId }) =>
loadQuery(consoleEnvironment, employeeDocumentSignatureQuery, { loadQuery(coreEnvironment, employeeDocumentSignatureQuery, {
documentId: documentId!, documentId: documentId!,
}), }),
), ),
@@ -186,9 +186,9 @@ const routes = [
{ {
path: "/organizations/:organizationId", path: "/organizations/:organizationId",
Component: () => ( Component: () => (
<RelayEnvironmentProvider environment={connectEnvironment}> <IAMRelayProvider>
<OrganizationLayoutQuery /> <OrganizationLayoutQuery />
</RelayEnvironmentProvider> </IAMRelayProvider>
), ),
ErrorBoundary: ErrorBoundary, ErrorBoundary: ErrorBoundary,
children: [ children: [
@@ -210,7 +210,7 @@ const routes = [
path: "settings", path: "settings",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery(consoleEnvironment, organizationViewQuery, { loadQuery(coreEnvironment, organizationViewQuery, {
organizationId: organizationId!, organizationId: organizationId!,
}), }),
), ),

View File

@@ -1,53 +1,65 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { assetsQuery, assetNodeQuery } from "../hooks/graph/AssetGraph"; import { assetsQuery, assetNodeQuery } from "../hooks/graph/AssetGraph";
import type { AssetGraphListQuery } from "/hooks/graph/__generated__/AssetGraphListQuery.graphql"; import type { AssetGraphListQuery } from "/hooks/graph/__generated__/AssetGraphListQuery.graphql";
import type { AssetGraphNodeQuery } from "/hooks/graph/__generated__/AssetGraphNodeQuery.graphql"; import type { AssetGraphNodeQuery } from "/hooks/graph/__generated__/AssetGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const assetRoutes = [ export const assetRoutes = [
{ {
path: "assets", path: "assets",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<AssetGraphListQuery>(consoleEnvironment, assetsQuery, { loadQuery<AssetGraphListQuery>(coreEnvironment, assetsQuery, {
organizationId: organizationId, organizationId: organizationId,
snapshotId: null, snapshotId: null,
}), }),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/assets/AssetsPage"))), Component: withQueryRef(
lazy(() => import("/pages/organizations/assets/AssetsPage")),
),
}, },
{ {
path: "snapshots/:snapshotId/assets", path: "snapshots/:snapshotId/assets",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<AssetGraphListQuery>(consoleEnvironment, assetsQuery, { loadQuery<AssetGraphListQuery>(coreEnvironment, assetsQuery, {
organizationId: organizationId, organizationId: organizationId,
snapshotId: snapshotId, snapshotId: snapshotId,
}), }),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/assets/AssetsPage"))), Component: withQueryRef(
lazy(() => import("/pages/organizations/assets/AssetsPage")),
),
}, },
{ {
path: "assets/:assetId", path: "assets/:assetId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ assetId }) => loader: loaderFromQueryLoader(({ assetId }) =>
loadQuery<AssetGraphNodeQuery>(consoleEnvironment, assetNodeQuery, { assetId }), loadQuery<AssetGraphNodeQuery>(coreEnvironment, assetNodeQuery, {
assetId,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/assets/AssetDetailsPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/assets/AssetDetailsPage"),
)),
}, },
{ {
path: "snapshots/:snapshotId/assets/:assetId", path: "snapshots/:snapshotId/assets/:assetId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ assetId }) => loader: loaderFromQueryLoader(({ assetId }) =>
loadQuery<AssetGraphNodeQuery>(consoleEnvironment, assetNodeQuery, { assetId }), loadQuery<AssetGraphNodeQuery>(coreEnvironment, assetNodeQuery, {
assetId,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/assets/AssetDetailsPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/assets/AssetDetailsPage"),
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,31 +1,39 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { auditsQuery, auditNodeQuery } from "../hooks/graph/AuditGraph"; import { auditsQuery, auditNodeQuery } from "../hooks/graph/AuditGraph";
import type { AuditGraphListQuery } from "/hooks/graph/__generated__/AuditGraphListQuery.graphql"; import type { AuditGraphListQuery } from "/hooks/graph/__generated__/AuditGraphListQuery.graphql";
import type { AuditGraphNodeQuery } from "/hooks/graph/__generated__/AuditGraphNodeQuery.graphql"; import type { AuditGraphNodeQuery } from "/hooks/graph/__generated__/AuditGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const auditRoutes = [ export const auditRoutes = [
{ {
path: "audits", path: "audits",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<AuditGraphListQuery>(consoleEnvironment, auditsQuery, { organizationId }), loadQuery<AuditGraphListQuery>(coreEnvironment, auditsQuery, {
organizationId,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/audits/AuditsPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/audits/AuditsPage")
)),
}, },
{ {
path: "audits/:auditId", path: "audits/:auditId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ auditId }) => loader: loaderFromQueryLoader(({ auditId }) =>
loadQuery<AuditGraphNodeQuery>(consoleEnvironment, auditNodeQuery, { auditId }), loadQuery<AuditGraphNodeQuery>(coreEnvironment, auditNodeQuery, {
auditId,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/audits/AuditDetailsPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/audits/AuditDetailsPage")
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,61 +1,96 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { continualImprovementsQuery, continualImprovementNodeQuery } from "/hooks/graph/ContinualImprovementGraph"; import {
continualImprovementsQuery,
continualImprovementNodeQuery,
} from "/hooks/graph/ContinualImprovementGraph";
import type { ContinualImprovementGraphListQuery } from "/hooks/graph/__generated__/ContinualImprovementGraphListQuery.graphql"; import type { ContinualImprovementGraphListQuery } from "/hooks/graph/__generated__/ContinualImprovementGraphListQuery.graphql";
import type { ContinualImprovementGraphNodeQuery } from "/hooks/graph/__generated__/ContinualImprovementGraphNodeQuery.graphql"; import type { ContinualImprovementGraphNodeQuery } from "/hooks/graph/__generated__/ContinualImprovementGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const continualImprovementRoutes = [ export const continualImprovementRoutes = [
{ {
path: "continual-improvements", path: "continual-improvements",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<ContinualImprovementGraphListQuery>(consoleEnvironment, continualImprovementsQuery, { loadQuery<ContinualImprovementGraphListQuery>(
coreEnvironment,
continualImprovementsQuery,
{
organizationId, organizationId,
snapshotId: null snapshotId: null,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/continualImprovements/ContinualImprovementsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/continualImprovements/ContinualImprovementsPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/continual-improvements", path: "snapshots/:snapshotId/continual-improvements",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<ContinualImprovementGraphListQuery>(consoleEnvironment, continualImprovementsQuery, { loadQuery<ContinualImprovementGraphListQuery>(
coreEnvironment,
continualImprovementsQuery,
{
organizationId, organizationId,
snapshotId, snapshotId,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/continualImprovements/ContinualImprovementsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/continualImprovements/ContinualImprovementsPage")
)),
}, },
{ {
path: "continual-improvements/:improvementId", path: "continual-improvements/:improvementId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ improvementId }) => loader: loaderFromQueryLoader(({ improvementId }) =>
loadQuery<ContinualImprovementGraphNodeQuery>(consoleEnvironment, continualImprovementNodeQuery, { loadQuery<ContinualImprovementGraphNodeQuery>(
coreEnvironment,
continualImprovementNodeQuery,
{
continualImprovementId: improvementId!, continualImprovementId: improvementId!,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/continualImprovements/ContinualImprovementDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/continualImprovements/ContinualImprovementDetailsPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/continual-improvements/:improvementId", path: "snapshots/:snapshotId/continual-improvements/:improvementId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ improvementId }) => loader: loaderFromQueryLoader(({ improvementId }) =>
loadQuery<ContinualImprovementGraphNodeQuery>(consoleEnvironment, continualImprovementNodeQuery, { loadQuery<ContinualImprovementGraphNodeQuery>(
coreEnvironment,
continualImprovementNodeQuery,
{
continualImprovementId: improvementId!, continualImprovementId: improvementId!,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/continualImprovements/ContinualImprovementDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/continualImprovements/ContinualImprovementDetailsPage")
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,57 +1,65 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { dataQuery, datumNodeQuery } from "../hooks/graph/DatumGraph"; import { dataQuery, datumNodeQuery } from "../hooks/graph/DatumGraph";
import type { DatumGraphListQuery } from "/hooks/graph/__generated__/DatumGraphListQuery.graphql"; import type { DatumGraphListQuery } from "/hooks/graph/__generated__/DatumGraphListQuery.graphql";
import type { DatumGraphNodeQuery } from "/hooks/graph/__generated__/DatumGraphNodeQuery.graphql"; import type { DatumGraphNodeQuery } from "/hooks/graph/__generated__/DatumGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const dataRoutes = [ export const dataRoutes = [
{ {
path: "data", path: "data",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<DatumGraphListQuery>(consoleEnvironment, dataQuery, { loadQuery<DatumGraphListQuery>(coreEnvironment, dataQuery, {
organizationId: organizationId, organizationId: organizationId,
snapshotId: null snapshotId: null,
}), }),
), ),
Component: withQueryRef(lazy( Component: withQueryRef(
() => import("/pages/organizations/data/DataPage") lazy(() => import("/pages/organizations/data/DataPage")),
)), ),
}, },
{ {
path: "snapshots/:snapshotId/data", path: "snapshots/:snapshotId/data",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<DatumGraphListQuery>(consoleEnvironment, dataQuery, { loadQuery<DatumGraphListQuery>(coreEnvironment, dataQuery, {
organizationId, organizationId,
snapshotId, snapshotId,
}), }),
), ),
Component: withQueryRef(lazy( Component: withQueryRef(
() => import("/pages/organizations/data/DataPage") lazy(() => import("/pages/organizations/data/DataPage")),
)), ),
}, },
{ {
path: "data/:dataId", path: "data/:dataId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ dataId }) => loader: loaderFromQueryLoader(({ dataId }) =>
loadQuery<DatumGraphNodeQuery>(consoleEnvironment, datumNodeQuery, { dataId }), loadQuery<DatumGraphNodeQuery>(coreEnvironment, datumNodeQuery, {
dataId,
}),
),
Component: withQueryRef(
lazy(() => import("../pages/organizations/data/DatumDetailsPage")),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/data/DatumDetailsPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/data/:dataId", path: "snapshots/:snapshotId/data/:dataId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ dataId }) => loader: loaderFromQueryLoader(({ dataId }) =>
loadQuery<DatumGraphNodeQuery>(consoleEnvironment, datumNodeQuery, { dataId }), loadQuery<DatumGraphNodeQuery>(coreEnvironment, datumNodeQuery, {
dataId,
}),
),
Component: withQueryRef(
lazy(() => import("../pages/organizations/data/DatumDetailsPage")),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/data/DatumDetailsPage")
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,13 +1,17 @@
import { Fragment } from "react"; import { Fragment } from "react";
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { documentsQuery } from "/hooks/graph/DocumentGraph"; import { documentsQuery } from "/hooks/graph/DocumentGraph";
import { documentNodeQuery } from "/hooks/graph/DocumentGraph"; import { documentNodeQuery } from "/hooks/graph/DocumentGraph";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { redirect, type LoaderFunctionArgs } from "react-router"; import { redirect, type LoaderFunctionArgs } from "react-router";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton"; import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { DocumentGraphListQuery } from "/hooks/graph/__generated__/DocumentGraphListQuery.graphql"; import type { DocumentGraphListQuery } from "/hooks/graph/__generated__/DocumentGraphListQuery.graphql";
import type { DocumentGraphNodeQuery } from "/hooks/graph/__generated__/DocumentGraphNodeQuery.graphql"; import type { DocumentGraphNodeQuery } from "/hooks/graph/__generated__/DocumentGraphNodeQuery.graphql";
@@ -15,7 +19,9 @@ const documentTabs = (prefix: string) => {
return [ return [
{ {
path: `${prefix}`, path: `${prefix}`,
loader: ({ params: { organizationId, documentId, versionId } }: LoaderFunctionArgs) => { loader: ({
params: { organizationId, documentId, versionId },
}: LoaderFunctionArgs) => {
const basePath = `/organizations/${organizationId}/documents/${documentId}`; const basePath = `/organizations/${organizationId}/documents/${documentId}`;
const redirectPath = versionId const redirectPath = versionId
? `${basePath}/versions/${versionId}/description` ? `${basePath}/versions/${versionId}/description`
@@ -29,9 +35,7 @@ const documentTabs = (prefix: string) => {
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import( import("../pages/organizations/documents/tabs/DocumentDescriptionTab"),
"../pages/organizations/documents/tabs/DocumentDescriptionTab"
),
), ),
}, },
{ {
@@ -58,21 +62,25 @@ export const documentsRoutes = [
path: "documents", path: "documents",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<DocumentGraphListQuery>(consoleEnvironment, documentsQuery, { organizationId: organizationId! }), loadQuery<DocumentGraphListQuery>(coreEnvironment, documentsQuery, {
organizationId: organizationId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/documents/DocumentsPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/documents/DocumentsPage"),
)),
}, },
{ {
path: "documents/:documentId", path: "documents/:documentId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ documentId }) => loader: loaderFromQueryLoader(({ documentId }) =>
loadQuery<DocumentGraphNodeQuery>(consoleEnvironment, documentNodeQuery, { documentId: documentId! }), loadQuery<DocumentGraphNodeQuery>(coreEnvironment, documentNodeQuery, {
documentId: documentId!,
}),
),
Component: withQueryRef(
lazy(() => import("../pages/organizations/documents/DocumentDetailPage")),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/documents/DocumentDetailPage"),
)),
children: [...documentTabs(""), ...documentTabs("versions/:versionId/")], children: [...documentTabs(""), ...documentTabs("versions/:versionId/")],
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,6 +1,6 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { import {
frameworksQuery, frameworksQuery,
frameworkNodeQuery, frameworkNodeQuery,
@@ -9,7 +9,11 @@ import {
import { Fragment } from "react"; import { Fragment } from "react";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { ControlSkeleton } from "../components/skeletons/ControlSkeleton"; import { ControlSkeleton } from "../components/skeletons/ControlSkeleton";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { FrameworkGraphListQuery } from "/hooks/graph/__generated__/FrameworkGraphListQuery.graphql"; import type { FrameworkGraphListQuery } from "/hooks/graph/__generated__/FrameworkGraphListQuery.graphql";
import type { FrameworkGraphNodeQuery } from "/hooks/graph/__generated__/FrameworkGraphNodeQuery.graphql"; import type { FrameworkGraphNodeQuery } from "/hooks/graph/__generated__/FrameworkGraphNodeQuery.graphql";
import type { FrameworkGraphControlNodeQuery } from "/hooks/graph/__generated__/FrameworkGraphControlNodeQuery.graphql"; import type { FrameworkGraphControlNodeQuery } from "/hooks/graph/__generated__/FrameworkGraphControlNodeQuery.graphql";
@@ -19,21 +23,25 @@ export const frameworkRoutes = [
path: "frameworks", path: "frameworks",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<FrameworkGraphListQuery>(consoleEnvironment, frameworksQuery, { organizationId: organizationId! }), loadQuery<FrameworkGraphListQuery>(coreEnvironment, frameworksQuery, {
organizationId: organizationId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/frameworks/FrameworksPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/frameworks/FrameworksPage")
)),
}, },
{ {
path: "frameworks/:frameworkId", path: "frameworks/:frameworkId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ frameworkId }) => loader: loaderFromQueryLoader(({ frameworkId }) =>
loadQuery<FrameworkGraphNodeQuery>(consoleEnvironment, frameworkNodeQuery, { frameworkId: frameworkId! }), loadQuery<FrameworkGraphNodeQuery>(coreEnvironment, frameworkNodeQuery, {
frameworkId: frameworkId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/frameworks/FrameworkDetailPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/frameworks/FrameworkDetailPage")
)),
children: [ children: [
{ {
path: "", path: "",
@@ -43,11 +51,18 @@ export const frameworkRoutes = [
path: "controls/:controlId", path: "controls/:controlId",
Fallback: ControlSkeleton, Fallback: ControlSkeleton,
loader: loaderFromQueryLoader(({ controlId }) => loader: loaderFromQueryLoader(({ controlId }) =>
loadQuery<FrameworkGraphControlNodeQuery>(consoleEnvironment, frameworkControlNodeQuery, { controlId: controlId! }), loadQuery<FrameworkGraphControlNodeQuery>(
coreEnvironment,
frameworkControlNodeQuery,
{ controlId: controlId! },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/frameworks/FrameworkControlPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/frameworks/FrameworkControlPage")
)),
}, },
], ],
}, },

View File

@@ -1,12 +1,16 @@
import { Fragment } from "react"; import { Fragment } from "react";
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { measureNodeQuery, measuresQuery } from "/hooks/graph/MeasureGraph"; import { measureNodeQuery, measuresQuery } from "/hooks/graph/MeasureGraph";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { redirect } from "react-router"; import { redirect } from "react-router";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton"; import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { MeasureGraphListQuery } from "/hooks/graph/__generated__/MeasureGraphListQuery.graphql"; import type { MeasureGraphListQuery } from "/hooks/graph/__generated__/MeasureGraphListQuery.graphql";
import type { MeasureGraphNodeQuery } from "/hooks/graph/__generated__/MeasureGraphNodeQuery.graphql"; import type { MeasureGraphNodeQuery } from "/hooks/graph/__generated__/MeasureGraphNodeQuery.graphql";
@@ -15,9 +19,13 @@ export const measureRoutes = [
path: "measures", path: "measures",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<MeasureGraphListQuery>(consoleEnvironment, measuresQuery, { organizationId: organizationId! }), loadQuery<MeasureGraphListQuery>(coreEnvironment, measuresQuery, {
organizationId: organizationId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/measures/MeasuresPage")),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/measures/MeasuresPage"))),
children: [ children: [
{ {
path: "category/:categoryId", path: "category/:categoryId",
@@ -29,9 +37,13 @@ export const measureRoutes = [
path: "measures/:measureId", path: "measures/:measureId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ measureId }) => loader: loaderFromQueryLoader(({ measureId }) =>
loadQuery<MeasureGraphNodeQuery>(consoleEnvironment, measureNodeQuery, { measureId: measureId! }), loadQuery<MeasureGraphNodeQuery>(coreEnvironment, measureNodeQuery, {
measureId: measureId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/measures/MeasureDetailPage")),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/measures/MeasureDetailPage"))),
children: [ children: [
{ {
path: "", path: "",
@@ -44,14 +56,16 @@ export const measureRoutes = [
path: "risks", path: "risks",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/measures/tabs/MeasureRisksTab.tsx") () =>
import("/pages/organizations/measures/tabs/MeasureRisksTab.tsx"),
), ),
}, },
{ {
path: "tasks", path: "tasks",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/measures/tabs/MeasureTasksTab.tsx") () =>
import("/pages/organizations/measures/tabs/MeasureTasksTab.tsx"),
), ),
}, },
{ {
@@ -59,7 +73,7 @@ export const measureRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import("/pages/organizations/measures/tabs/MeasureControlsTab.tsx") import("/pages/organizations/measures/tabs/MeasureControlsTab.tsx"),
), ),
}, },
{ {
@@ -67,7 +81,7 @@ export const measureRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import("/pages/organizations/measures/tabs/MeasureEvidencesTab.tsx") import("/pages/organizations/measures/tabs/MeasureEvidencesTab.tsx"),
), ),
}, },
], ],

View File

@@ -1,6 +1,6 @@
import { Fragment } from "react"; import { Fragment } from "react";
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { meetingsQuery } from "/hooks/graph/MeetingGraph"; import { meetingsQuery } from "/hooks/graph/MeetingGraph";
import { meetingNodeQuery } from "/hooks/graph/MeetingGraph"; import { meetingNodeQuery } from "/hooks/graph/MeetingGraph";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
@@ -9,13 +9,19 @@ import { lazy } from "@probo/react-lazy";
import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton"; import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton";
import type { MeetingGraphListQuery } from "/hooks/graph/__generated__/MeetingGraphListQuery.graphql"; import type { MeetingGraphListQuery } from "/hooks/graph/__generated__/MeetingGraphListQuery.graphql";
import type { MeetingGraphNodeQuery } from "/hooks/graph/__generated__/MeetingGraphNodeQuery.graphql"; import type { MeetingGraphNodeQuery } from "/hooks/graph/__generated__/MeetingGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
const meetingTabs = (prefix: string) => { const meetingTabs = (prefix: string) => {
return [ return [
{ {
path: `${prefix}`, path: `${prefix}`,
loader: ({ params: { organizationId, meetingId } }: LoaderFunctionArgs) => { loader: ({
params: { organizationId, meetingId },
}: LoaderFunctionArgs) => {
const basePath = `/organizations/${organizationId}/meetings/${meetingId}`; const basePath = `/organizations/${organizationId}/meetings/${meetingId}`;
const redirectPath = `${basePath}/minutes`; const redirectPath = `${basePath}/minutes`;
throw redirect(redirectPath); throw redirect(redirectPath);
@@ -26,10 +32,7 @@ const meetingTabs = (prefix: string) => {
path: `${prefix}minutes`, path: `${prefix}minutes`,
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () => import("../pages/organizations/meetings/tabs/MeetingMinutesTab"),
import(
"../pages/organizations/meetings/tabs/MeetingMinutesTab"
),
), ),
}, },
]; ];
@@ -40,22 +43,25 @@ export const meetingsRoutes = [
path: "meetings", path: "meetings",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<MeetingGraphListQuery>(consoleEnvironment, meetingsQuery, { organizationId }), loadQuery<MeetingGraphListQuery>(coreEnvironment, meetingsQuery, {
organizationId,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/meetings/MeetingsPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/meetings/MeetingsPage"),
)),
}, },
{ {
path: "meetings/:meetingId", path: "meetings/:meetingId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ meetingId }) => loader: loaderFromQueryLoader(({ meetingId }) =>
loadQuery<MeetingGraphNodeQuery>(consoleEnvironment, meetingNodeQuery, { meetingId }), loadQuery<MeetingGraphNodeQuery>(coreEnvironment, meetingNodeQuery, {
meetingId,
}),
),
Component: withQueryRef(
lazy(() => import("../pages/organizations/meetings/MeetingDetailPage")),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/meetings/MeetingDetailPage"),
)),
children: [...meetingTabs("")], children: [...meetingTabs("")],
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,61 +1,96 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { nonconformitiesQuery, nonconformityNodeQuery } from "../hooks/graph/NonconformityGraph"; import {
nonconformitiesQuery,
nonconformityNodeQuery,
} from "../hooks/graph/NonconformityGraph";
import type { NonconformityGraphListQuery } from "/hooks/graph/__generated__/NonconformityGraphListQuery.graphql"; import type { NonconformityGraphListQuery } from "/hooks/graph/__generated__/NonconformityGraphListQuery.graphql";
import type { NonconformityGraphNodeQuery } from "/hooks/graph/__generated__/NonconformityGraphNodeQuery.graphql"; import type { NonconformityGraphNodeQuery } from "/hooks/graph/__generated__/NonconformityGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const nonconformityRoutes = [ export const nonconformityRoutes = [
{ {
path: "nonconformities", path: "nonconformities",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<NonconformityGraphListQuery>(consoleEnvironment, nonconformitiesQuery, { loadQuery<NonconformityGraphListQuery>(
coreEnvironment,
nonconformitiesQuery,
{
organizationId, organizationId,
snapshotId: null snapshotId: null,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("../pages/organizations/nonconformities/NonconformitiesPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/nonconformities/NonconformitiesPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/nonconformities", path: "snapshots/:snapshotId/nonconformities",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<NonconformityGraphListQuery>(consoleEnvironment, nonconformitiesQuery, { loadQuery<NonconformityGraphListQuery>(
coreEnvironment,
nonconformitiesQuery,
{
organizationId, organizationId,
snapshotId, snapshotId,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("../pages/organizations/nonconformities/NonconformitiesPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/nonconformities/NonconformitiesPage")
)),
}, },
{ {
path: "nonconformities/:nonconformityId", path: "nonconformities/:nonconformityId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ nonconformityId }) => loader: loaderFromQueryLoader(({ nonconformityId }) =>
loadQuery<NonconformityGraphNodeQuery>(consoleEnvironment, nonconformityNodeQuery, { loadQuery<NonconformityGraphNodeQuery>(
coreEnvironment,
nonconformityNodeQuery,
{
nonconformityId, nonconformityId,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("../pages/organizations/nonconformities/NonconformityDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/nonconformities/NonconformityDetailsPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/nonconformities/:nonconformityId", path: "snapshots/:snapshotId/nonconformities/:nonconformityId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ nonconformityId }) => loader: loaderFromQueryLoader(({ nonconformityId }) =>
loadQuery<NonconformityGraphNodeQuery>(consoleEnvironment, nonconformityNodeQuery, { loadQuery<NonconformityGraphNodeQuery>(
nonconformityId: nonconformityId coreEnvironment,
}), nonconformityNodeQuery,
{
nonconformityId: nonconformityId,
},
),
),
Component: withQueryRef(
lazy(
() =>
import("../pages/organizations/nonconformities/NonconformityDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("../pages/organizations/nonconformities/NonconformityDetailsPage")
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,61 +1,80 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { obligationsQuery, obligationNodeQuery } from "/hooks/graph/ObligationGraph"; import {
obligationsQuery,
obligationNodeQuery,
} from "/hooks/graph/ObligationGraph";
import type { ObligationGraphListQuery } from "/hooks/graph/__generated__/ObligationGraphListQuery.graphql"; import type { ObligationGraphListQuery } from "/hooks/graph/__generated__/ObligationGraphListQuery.graphql";
import type { ObligationGraphNodeQuery } from "/hooks/graph/__generated__/ObligationGraphNodeQuery.graphql"; import type { ObligationGraphNodeQuery } from "/hooks/graph/__generated__/ObligationGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const obligationRoutes = [ export const obligationRoutes = [
{ {
path: "obligations", path: "obligations",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<ObligationGraphListQuery>(consoleEnvironment, obligationsQuery, { loadQuery<ObligationGraphListQuery>(coreEnvironment, obligationsQuery, {
organizationId, organizationId,
snapshotId: null snapshotId: null,
}), }),
), ),
Component: withQueryRef(lazy( Component: withQueryRef(
() => import("/pages/organizations/obligations/ObligationsPage") lazy(() => import("/pages/organizations/obligations/ObligationsPage")),
)), ),
}, },
{ {
path: "snapshots/:snapshotId/obligations", path: "snapshots/:snapshotId/obligations",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<ObligationGraphListQuery>(consoleEnvironment, obligationsQuery, { loadQuery<ObligationGraphListQuery>(coreEnvironment, obligationsQuery, {
organizationId, organizationId,
snapshotId, snapshotId,
}), }),
), ),
Component: withQueryRef(lazy( Component: withQueryRef(
() => import("/pages/organizations/obligations/ObligationsPage") lazy(() => import("/pages/organizations/obligations/ObligationsPage")),
)), ),
}, },
{ {
path: "obligations/:obligationId", path: "obligations/:obligationId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ obligationId }) => loader: loaderFromQueryLoader(({ obligationId }) =>
loadQuery<ObligationGraphNodeQuery>(consoleEnvironment, obligationNodeQuery, { loadQuery<ObligationGraphNodeQuery>(
coreEnvironment,
obligationNodeQuery,
{
obligationId, obligationId,
}), },
),
),
Component: withQueryRef(
lazy(
() => import("/pages/organizations/obligations/ObligationDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/obligations/ObligationDetailsPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/obligations/:obligationId", path: "snapshots/:snapshotId/obligations/:obligationId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ obligationId }) => loader: loaderFromQueryLoader(({ obligationId }) =>
loadQuery<ObligationGraphNodeQuery>(consoleEnvironment, obligationNodeQuery, { loadQuery<ObligationGraphNodeQuery>(
coreEnvironment,
obligationNodeQuery,
{
obligationId, obligationId,
}), },
),
),
Component: withQueryRef(
lazy(
() => import("/pages/organizations/obligations/ObligationDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/obligations/ObligationDetailsPage")
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,13 +1,17 @@
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton.tsx"; import { PageSkeleton } from "/components/skeletons/PageSkeleton.tsx";
import { import {
paginatedPeopleQuery, paginatedPeopleQuery,
peopleNodeQuery, peopleNodeQuery,
} from "/hooks/graph/PeopleGraph"; } from "/hooks/graph/PeopleGraph";
import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton"; import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { PeopleGraphPaginatedQuery } from "/hooks/graph/__generated__/PeopleGraphPaginatedQuery.graphql"; import type { PeopleGraphPaginatedQuery } from "/hooks/graph/__generated__/PeopleGraphPaginatedQuery.graphql";
import type { PeopleGraphNodeQuery } from "/hooks/graph/__generated__/PeopleGraphNodeQuery.graphql"; import type { PeopleGraphNodeQuery } from "/hooks/graph/__generated__/PeopleGraphNodeQuery.graphql";
@@ -16,39 +20,47 @@ export const peopleRoutes = [
path: "people", path: "people",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<PeopleGraphPaginatedQuery>(consoleEnvironment, paginatedPeopleQuery, { organizationId: organizationId! }), loadQuery<PeopleGraphPaginatedQuery>(
coreEnvironment,
paginatedPeopleQuery,
{ organizationId: organizationId! },
),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/people/PeopleListPage")),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/people/PeopleListPage"))),
}, },
{ {
path: "people/:peopleId", path: "people/:peopleId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ peopleId }) => loader: loaderFromQueryLoader(({ peopleId }) =>
loadQuery<PeopleGraphNodeQuery>(consoleEnvironment, peopleNodeQuery, { peopleId: peopleId! }), loadQuery<PeopleGraphNodeQuery>(coreEnvironment, peopleNodeQuery, {
peopleId: peopleId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/people/PeopleDetailPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/people/PeopleDetailPage")
)),
children: [ children: [
{ {
path: "tasks", path: "tasks",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/people/tabs/PeopleTasksTab") () => import("/pages/organizations/people/tabs/PeopleTasksTab"),
), ),
}, },
{ {
path: "role", path: "role",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/people/tabs/PeopleRoleTab") () => import("/pages/organizations/people/tabs/PeopleRoleTab"),
), ),
}, },
{ {
path: "profile", path: "profile",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/people/tabs/PeopleProfileTab") () => import("/pages/organizations/people/tabs/PeopleProfileTab"),
), ),
}, },
], ],

View File

@@ -1,9 +1,16 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { processingActivitiesQuery, processingActivityNodeQuery } from "/hooks/graph/ProcessingActivityGraph"; import {
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; processingActivitiesQuery,
processingActivityNodeQuery,
} from "/hooks/graph/ProcessingActivityGraph";
import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { ProcessingActivityGraphListQuery } from "/hooks/graph/__generated__/ProcessingActivityGraphListQuery.graphql"; import type { ProcessingActivityGraphListQuery } from "/hooks/graph/__generated__/ProcessingActivityGraphListQuery.graphql";
import type { ProcessingActivityGraphNodeQuery } from "/hooks/graph/__generated__/ProcessingActivityGraphNodeQuery.graphql"; import type { ProcessingActivityGraphNodeQuery } from "/hooks/graph/__generated__/ProcessingActivityGraphNodeQuery.graphql";
@@ -12,50 +19,78 @@ export const processingActivityRoutes = [
path: "processing-activities", path: "processing-activities",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<ProcessingActivityGraphListQuery>(consoleEnvironment, processingActivitiesQuery, { loadQuery<ProcessingActivityGraphListQuery>(
coreEnvironment,
processingActivitiesQuery,
{
organizationId: organizationId!, organizationId: organizationId!,
snapshotId: null snapshotId: null,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/processingActivities/ProcessingActivitiesPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/processingActivities/ProcessingActivitiesPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/processing-activities", path: "snapshots/:snapshotId/processing-activities",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<ProcessingActivityGraphListQuery>(consoleEnvironment, processingActivitiesQuery, { loadQuery<ProcessingActivityGraphListQuery>(
coreEnvironment,
processingActivitiesQuery,
{
organizationId: organizationId!, organizationId: organizationId!,
snapshotId, snapshotId,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/processingActivities/ProcessingActivitiesPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/processingActivities/ProcessingActivitiesPage")
)),
}, },
{ {
path: "processing-activities/:activityId", path: "processing-activities/:activityId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ activityId }) => loader: loaderFromQueryLoader(({ activityId }) =>
loadQuery<ProcessingActivityGraphNodeQuery>(consoleEnvironment, processingActivityNodeQuery, { loadQuery<ProcessingActivityGraphNodeQuery>(
coreEnvironment,
processingActivityNodeQuery,
{
processingActivityId: activityId!, processingActivityId: activityId!,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/processingActivities/ProcessingActivityDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/processingActivities/ProcessingActivityDetailsPage")
)),
}, },
{ {
path: "snapshots/:snapshotId/processing-activities/:activityId", path: "snapshots/:snapshotId/processing-activities/:activityId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ activityId }) => loader: loaderFromQueryLoader(({ activityId }) =>
loadQuery<ProcessingActivityGraphNodeQuery>(consoleEnvironment, processingActivityNodeQuery, { loadQuery<ProcessingActivityGraphNodeQuery>(
coreEnvironment,
processingActivityNodeQuery,
{
processingActivityId: activityId!, processingActivityId: activityId!,
}), },
),
),
Component: withQueryRef(
lazy(
() =>
import("/pages/organizations/processingActivities/ProcessingActivityDetailsPage"),
),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/processingActivities/ProcessingActivityDetailsPage")
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,14 +1,18 @@
import { Fragment } from "react"; import { Fragment } from "react";
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { RisksPageSkeleton } from "/components/skeletons/RisksPageSkeleton.tsx"; import { RisksPageSkeleton } from "/components/skeletons/RisksPageSkeleton.tsx";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { riskNodeQuery, risksQuery } from "/hooks/graph/RiskGraph"; import { riskNodeQuery, risksQuery } from "/hooks/graph/RiskGraph";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { redirect } from "react-router"; import { redirect } from "react-router";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton"; import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton";
import type { RiskGraphNodeQuery } from "/hooks/graph/__generated__/RiskGraphNodeQuery.graphql"; import type { RiskGraphNodeQuery } from "/hooks/graph/__generated__/RiskGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { RiskGraphListQuery } from "/hooks/graph/__generated__/RiskGraphListQuery.graphql"; import type { RiskGraphListQuery } from "/hooks/graph/__generated__/RiskGraphListQuery.graphql";
export const riskRoutes = [ export const riskRoutes = [
@@ -16,31 +20,39 @@ export const riskRoutes = [
path: "risks", path: "risks",
Fallback: RisksPageSkeleton, Fallback: RisksPageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<RiskGraphListQuery>(consoleEnvironment, risksQuery, { loadQuery<RiskGraphListQuery>(coreEnvironment, risksQuery, {
organizationId: organizationId!, organizationId: organizationId!,
snapshotId: null snapshotId: null,
}), }),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/risks/RisksPage"))), Component: withQueryRef(
lazy(() => import("/pages/organizations/risks/RisksPage")),
),
}, },
{ {
path: "snapshots/:snapshotId/risks", path: "snapshots/:snapshotId/risks",
Fallback: RisksPageSkeleton, Fallback: RisksPageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<RiskGraphListQuery>(consoleEnvironment, risksQuery, { loadQuery<RiskGraphListQuery>(coreEnvironment, risksQuery, {
organizationId: organizationId!, organizationId: organizationId!,
snapshotId: snapshotId! snapshotId: snapshotId!,
}), }),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/risks/RisksPage"))), Component: withQueryRef(
lazy(() => import("/pages/organizations/risks/RisksPage")),
),
}, },
{ {
path: "risks/:riskId", path: "risks/:riskId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ riskId }) => loader: loaderFromQueryLoader(({ riskId }) =>
loadQuery<RiskGraphNodeQuery>(consoleEnvironment, riskNodeQuery, { riskId: riskId! }), loadQuery<RiskGraphNodeQuery>(coreEnvironment, riskNodeQuery, {
riskId: riskId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/risks/RiskDetailPage")),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/risks/RiskDetailPage"))),
children: [ children: [
{ {
path: "", path: "",
@@ -53,35 +65,36 @@ export const riskRoutes = [
path: "overview", path: "overview",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/risks/tabs/RiskOverviewTab.tsx") () => import("/pages/organizations/risks/tabs/RiskOverviewTab.tsx"),
), ),
}, },
{ {
path: "measures", path: "measures",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/risks/tabs/RiskMeasuresTab.tsx") () => import("/pages/organizations/risks/tabs/RiskMeasuresTab.tsx"),
), ),
}, },
{ {
path: "documents", path: "documents",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/risks/tabs/RiskDocumentsTab.tsx") () => import("/pages/organizations/risks/tabs/RiskDocumentsTab.tsx"),
), ),
}, },
{ {
path: "controls", path: "controls",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/risks/tabs/RiskControlsTab.tsx") () => import("/pages/organizations/risks/tabs/RiskControlsTab.tsx"),
), ),
}, },
{ {
path: "obligations", path: "obligations",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/risks/tabs/RiskObligationsTab.tsx") () =>
import("/pages/organizations/risks/tabs/RiskObligationsTab.tsx"),
), ),
}, },
], ],
@@ -90,9 +103,13 @@ export const riskRoutes = [
path: "snapshots/:snapshotId/risks/:riskId", path: "snapshots/:snapshotId/risks/:riskId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ riskId }) => loader: loaderFromQueryLoader(({ riskId }) =>
loadQuery<RiskGraphNodeQuery>(consoleEnvironment, riskNodeQuery, { riskId: riskId! }), loadQuery<RiskGraphNodeQuery>(coreEnvironment, riskNodeQuery, {
riskId: riskId!,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/risks/RiskDetailPage")),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/risks/RiskDetailPage"))),
children: [ children: [
{ {
path: "", path: "",
@@ -105,7 +122,7 @@ export const riskRoutes = [
path: "overview", path: "overview",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/risks/tabs/RiskOverviewTab.tsx") () => import("/pages/organizations/risks/tabs/RiskOverviewTab.tsx"),
), ),
}, },
], ],

View File

@@ -1,31 +1,39 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { snapshotsQuery, snapshotNodeQuery } from "/hooks/graph/SnapshotGraph"; import { snapshotsQuery, snapshotNodeQuery } from "/hooks/graph/SnapshotGraph";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import type { SnapshotGraphListQuery } from "/hooks/graph/__generated__/SnapshotGraphListQuery.graphql"; import type { SnapshotGraphListQuery } from "/hooks/graph/__generated__/SnapshotGraphListQuery.graphql";
import type { SnapshotGraphNodeQuery } from "/hooks/graph/__generated__/SnapshotGraphNodeQuery.graphql"; import type { SnapshotGraphNodeQuery } from "/hooks/graph/__generated__/SnapshotGraphNodeQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const snapshotsRoutes = [ export const snapshotsRoutes = [
{ {
path: "snapshots", path: "snapshots",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<SnapshotGraphListQuery>(consoleEnvironment, snapshotsQuery, { organizationId }), loadQuery<SnapshotGraphListQuery>(coreEnvironment, snapshotsQuery, {
organizationId,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/snapshots/SnapshotsPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/snapshots/SnapshotsPage")
)),
}, },
{ {
path: "snapshots/:snapshotId", path: "snapshots/:snapshotId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ snapshotId }) => loader: loaderFromQueryLoader(({ snapshotId }) =>
loadQuery<SnapshotGraphNodeQuery>(consoleEnvironment, snapshotNodeQuery, { snapshotId }), loadQuery<SnapshotGraphNodeQuery>(coreEnvironment, snapshotNodeQuery, {
snapshotId,
}),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/snapshots/SnapshotDetailPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/snapshots/SnapshotDetailPage")
)),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,19 +1,25 @@
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { tasksQuery } from "/hooks/graph/TaskGraph"; import { tasksQuery } from "/hooks/graph/TaskGraph";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { TaskGraphQuery } from "/hooks/graph/__generated__/TaskGraphQuery.graphql"; import type { TaskGraphQuery } from "/hooks/graph/__generated__/TaskGraphQuery.graphql";
export const taskRoutes = [ export const taskRoutes = [
{ {
path: "tasks", path: "tasks",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<TaskGraphQuery>(consoleEnvironment, tasksQuery, { loadQuery<TaskGraphQuery>(coreEnvironment, tasksQuery, {
organizationId, organizationId,
}), }),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/tasks/TasksPage"))), Component: withQueryRef(
lazy(() => import("/pages/organizations/tasks/TasksPage")),
),
}, },
] satisfies AppRoute[]; ] satisfies AppRoute[];

View File

@@ -1,70 +1,84 @@
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton"; import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton";
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { trustCenterQuery } from "../hooks/graph/TrustCenterGraph"; import { trustCenterQuery } from "../hooks/graph/TrustCenterGraph";
import type { TrustCenterGraphQuery } from "/hooks/graph/__generated__/TrustCenterGraphQuery.graphql"; import type { TrustCenterGraphQuery } from "/hooks/graph/__generated__/TrustCenterGraphQuery.graphql";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
export const trustCenterRoutes = [ export const trustCenterRoutes = [
{ {
path: "trust-center", path: "trust-center",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<TrustCenterGraphQuery>(consoleEnvironment, trustCenterQuery, { organizationId }, { fetchPolicy: "network-only" }), loadQuery<TrustCenterGraphQuery>(
coreEnvironment,
trustCenterQuery,
{ organizationId },
{ fetchPolicy: "network-only" },
),
),
Component: withQueryRef(
lazy(() => import("/pages/organizations/trustCenter/TrustCenterPage")),
), ),
Component: withQueryRef(lazy(
() => import("/pages/organizations/trustCenter/TrustCenterPage")
)),
children: [ children: [
{ {
index: true, index: true,
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/trustCenter/TrustCenterOverviewTab") () =>
import("/pages/organizations/trustCenter/TrustCenterOverviewTab"),
), ),
}, },
{ {
path: "trust-by", path: "trust-by",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/trustCenter/TrustCenterReferencesTab") () =>
import("/pages/organizations/trustCenter/TrustCenterReferencesTab"),
), ),
}, },
{ {
path: "audits", path: "audits",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/trustCenter/TrustCenterAuditsTab") () => import("/pages/organizations/trustCenter/TrustCenterAuditsTab"),
), ),
}, },
{ {
path: "documents", path: "documents",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/trustCenter/TrustCenterDocumentsTab") () =>
import("/pages/organizations/trustCenter/TrustCenterDocumentsTab"),
), ),
}, },
{ {
path: "files", path: "files",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/trustCenter/TrustCenterFilesTab") () => import("/pages/organizations/trustCenter/TrustCenterFilesTab"),
), ),
}, },
{ {
path: "vendors", path: "vendors",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/trustCenter/TrustCenterVendorsTab") () =>
import("/pages/organizations/trustCenter/TrustCenterVendorsTab"),
), ),
}, },
{ {
path: "access", path: "access",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("/pages/organizations/trustCenter/TrustCenterAccessTab/TrustCenterAccessTab") () =>
import("/pages/organizations/trustCenter/TrustCenterAccessTab/TrustCenterAccessTab"),
), ),
}, },
], ],

View File

@@ -1,10 +1,14 @@
import { lazy } from "@probo/react-lazy"; import { lazy } from "@probo/react-lazy";
import { loadQuery } from "react-relay"; import { loadQuery } from "react-relay";
import { consoleEnvironment } from "/environments"; import { coreEnvironment } from "/environments";
import { PageSkeleton } from "/components/skeletons/PageSkeleton"; import { PageSkeleton } from "/components/skeletons/PageSkeleton";
import { vendorNodeQuery, vendorsQuery } from "/hooks/graph/VendorGraph"; import { vendorNodeQuery, vendorsQuery } from "/hooks/graph/VendorGraph";
import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton"; import { LinkCardSkeleton } from "/components/skeletons/LinkCardSkeleton";
import { loaderFromQueryLoader, withQueryRef, type AppRoute } from "@probo/routes"; import {
loaderFromQueryLoader,
withQueryRef,
type AppRoute,
} from "@probo/routes";
import type { VendorGraphListQuery } from "/hooks/graph/__generated__/VendorGraphListQuery.graphql"; import type { VendorGraphListQuery } from "/hooks/graph/__generated__/VendorGraphListQuery.graphql";
import type { VendorGraphNodeQuery } from "/hooks/graph/__generated__/VendorGraphNodeQuery.graphql"; import type { VendorGraphNodeQuery } from "/hooks/graph/__generated__/VendorGraphNodeQuery.graphql";
@@ -13,41 +17,45 @@ export const vendorRoutes = [
path: "vendors", path: "vendors",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId }) => loader: loaderFromQueryLoader(({ organizationId }) =>
loadQuery<VendorGraphListQuery>(consoleEnvironment, vendorsQuery, { loadQuery<VendorGraphListQuery>(coreEnvironment, vendorsQuery, {
organizationId: organizationId!, organizationId: organizationId!,
snapshotId: null snapshotId: null,
}), }),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/vendors/VendorsPage"))), Component: withQueryRef(
lazy(() => import("/pages/organizations/vendors/VendorsPage")),
),
}, },
{ {
path: "snapshots/:snapshotId/vendors", path: "snapshots/:snapshotId/vendors",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ organizationId, snapshotId }) => loader: loaderFromQueryLoader(({ organizationId, snapshotId }) =>
loadQuery<VendorGraphListQuery>(consoleEnvironment, vendorsQuery, { loadQuery<VendorGraphListQuery>(coreEnvironment, vendorsQuery, {
organizationId: organizationId!, organizationId: organizationId!,
snapshotId snapshotId,
}), }),
), ),
Component: withQueryRef(lazy(() => import("/pages/organizations/vendors/VendorsPage"))), Component: withQueryRef(
lazy(() => import("/pages/organizations/vendors/VendorsPage")),
),
}, },
{ {
path: "vendors/:vendorId", path: "vendors/:vendorId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ vendorId }) => loader: loaderFromQueryLoader(({ vendorId }) =>
loadQuery<VendorGraphNodeQuery>(consoleEnvironment, vendorNodeQuery, { loadQuery<VendorGraphNodeQuery>(coreEnvironment, vendorNodeQuery, {
vendorId: vendorId!, vendorId: vendorId!,
}), }),
), ),
Component: withQueryRef(lazy( Component: withQueryRef(
() => import("../pages/organizations/vendors/VendorDetailPage") lazy(() => import("../pages/organizations/vendors/VendorDetailPage")),
)), ),
children: [ children: [
{ {
path: "overview", path: "overview",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("../pages/organizations/vendors/tabs/VendorOverviewTab") () => import("../pages/organizations/vendors/tabs/VendorOverviewTab"),
), ),
}, },
{ {
@@ -55,9 +63,7 @@ export const vendorRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import( import("../pages/organizations/vendors/tabs/VendorCertificationsTab"),
"../pages/organizations/vendors/tabs/VendorCertificationsTab"
)
), ),
}, },
{ {
@@ -65,7 +71,7 @@ export const vendorRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import("../pages/organizations/vendors/tabs/VendorComplianceTab") import("../pages/organizations/vendors/tabs/VendorComplianceTab"),
), ),
}, },
{ {
@@ -73,25 +79,21 @@ export const vendorRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import( import("../pages/organizations/vendors/tabs/VendorRiskAssessmentTab"),
"../pages/organizations/vendors/tabs/VendorRiskAssessmentTab"
)
), ),
}, },
{ {
path: "contacts", path: "contacts",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () => import("../pages/organizations/vendors/tabs/VendorContactsTab"),
import("../pages/organizations/vendors/tabs/VendorContactsTab")
), ),
}, },
{ {
path: "services", path: "services",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () => import("../pages/organizations/vendors/tabs/VendorServicesTab"),
import("../pages/organizations/vendors/tabs/VendorServicesTab")
), ),
}, },
], ],
@@ -100,19 +102,19 @@ export const vendorRoutes = [
path: "snapshots/:snapshotId/vendors/:vendorId", path: "snapshots/:snapshotId/vendors/:vendorId",
Fallback: PageSkeleton, Fallback: PageSkeleton,
loader: loaderFromQueryLoader(({ vendorId }) => loader: loaderFromQueryLoader(({ vendorId }) =>
loadQuery<VendorGraphNodeQuery>(consoleEnvironment, vendorNodeQuery, { loadQuery<VendorGraphNodeQuery>(coreEnvironment, vendorNodeQuery, {
vendorId: vendorId!, vendorId: vendorId!,
}), }),
), ),
Component: withQueryRef(lazy( Component: withQueryRef(
() => import("../pages/organizations/vendors/VendorDetailPage") lazy(() => import("../pages/organizations/vendors/VendorDetailPage")),
)), ),
children: [ children: [
{ {
path: "overview", path: "overview",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => import("../pages/organizations/vendors/tabs/VendorOverviewTab") () => import("../pages/organizations/vendors/tabs/VendorOverviewTab"),
), ),
}, },
{ {
@@ -120,9 +122,7 @@ export const vendorRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import( import("../pages/organizations/vendors/tabs/VendorCertificationsTab"),
"../pages/organizations/vendors/tabs/VendorCertificationsTab"
)
), ),
}, },
{ {
@@ -130,7 +130,7 @@ export const vendorRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import("../pages/organizations/vendors/tabs/VendorComplianceTab") import("../pages/organizations/vendors/tabs/VendorComplianceTab"),
), ),
}, },
{ {
@@ -138,25 +138,21 @@ export const vendorRoutes = [
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () =>
import( import("../pages/organizations/vendors/tabs/VendorRiskAssessmentTab"),
"../pages/organizations/vendors/tabs/VendorRiskAssessmentTab"
)
), ),
}, },
{ {
path: "contacts", path: "contacts",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () => import("../pages/organizations/vendors/tabs/VendorContactsTab"),
import("../pages/organizations/vendors/tabs/VendorContactsTab")
), ),
}, },
{ {
path: "services", path: "services",
Fallback: LinkCardSkeleton, Fallback: LinkCardSkeleton,
Component: lazy( Component: lazy(
() => () => import("../pages/organizations/vendors/tabs/VendorServicesTab"),
import("../pages/organizations/vendors/tabs/VendorServicesTab")
), ),
}, },
], ],