import { useParams } from "react-router-dom"; import { usePageQuery } from "@/features/page/queries/page-query"; import { FullEditor } from "@/features/editor/full-editor"; import HistoryModal from "@/features/page-history/components/history-modal"; import { Helmet } from "react-helmet-async"; import PageHeader from "@/features/page/components/header/page-header.tsx"; import { extractPageSlugId } from "@/lib"; import { useGetSpaceBySlugQuery } from "@/features/space/queries/space-query.ts"; import { useTranslation } from "react-i18next"; import React from "react"; import { EmptyState } from "@/components/ui/empty-state.tsx"; import { IconAlertTriangle, IconFileOff } from "@tabler/icons-react"; import { Button } from "@mantine/core"; import { Link } from "react-router-dom"; import { ErrorBoundary } from "react-error-boundary"; const MemoizedFullEditor = React.memo(FullEditor); const MemoizedPageHeader = React.memo(PageHeader); const MemoizedHistoryModal = React.memo(HistoryModal); export default function Page() { const { t } = useTranslation(); const { pageSlug } = useParams(); return ( ( {t("Try again")} } /> )} > ); } function PageContent({ pageSlug }: { pageSlug: string | undefined }) { const { t } = useTranslation(); const { data: page, isLoading, isError, error, } = usePageQuery({ pageId: extractPageSlugId(pageSlug) }); const { data: space } = useGetSpaceBySlugQuery(page?.space?.slug); const canEdit = page?.permissions?.canEdit ?? false; if (isLoading) { return <>; } if (isError || !page) { if ([401, 403, 404].includes(error?.["status"])) { return ( {t("Go to homepage")} } /> ); } return ( ); } if (!space) { return <>; } return ( page && (
{`${page?.icon || ""} ${page?.title || t("untitled")}`}
) ); }