Files
probo/apps/console/src/pages/organizations/documents/DocumentLayoutLoader.tsx
Sacha Al Himdani c493e31745 Fix documents UI
- Fix redirection after document deletion in detail page
- Fix refetch after publication
- Return proper error when trying to update a published document

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-13 12:01:57 +01:00

51 lines
1.5 KiB
TypeScript

import { Suspense, useCallback, useEffect } from "react";
import { useQueryLoader } from "react-relay";
import { useParams } from "react-router";
import type { DocumentLayoutQuery } from "#/__generated__/core/DocumentLayoutQuery.graphql";
import { PageSkeleton } from "#/components/skeletons/PageSkeleton";
import { CoreRelayProvider } from "#/providers/CoreRelayProvider";
import { DocumentLayout, documentLayoutQuery } from "./DocumentLayout";
function DocumentLayoutQueryLoader() {
const { documentId, versionId } = useParams();
if (!documentId) {
throw new Error(":documentId missing in route params");
}
const [queryRef, loadQuery] = useQueryLoader<DocumentLayoutQuery>(documentLayoutQuery);
useEffect(() => {
if (!queryRef) {
loadQuery({
documentId,
versionId: versionId ?? "",
versionSpecified: !!versionId,
});
}
});
const onRefetch = useCallback(() => {
loadQuery(
{ documentId, versionId: versionId ?? "", versionSpecified: !!versionId },
{ fetchPolicy: "network-only" },
);
}, [documentId, versionId, loadQuery]);
if (!queryRef) return <PageSkeleton />;
return <DocumentLayout queryRef={queryRef} onRefetch={onRefetch} />;
}
export default function DocumentLayoutLoader() {
const { documentId, versionId } = useParams();
return (
<CoreRelayProvider>
<Suspense key={`${documentId}-${versionId}`} fallback={<PageSkeleton />}>
<DocumentLayoutQueryLoader />
</Suspense>
</CoreRelayProvider>
);
}