mirror of
https://github.com/makeplane/plane
synced 2025-08-07 19:59:33 +00:00
Compare commits
1 Commits
refactor-e
...
refactor/g
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83298a7a69 |
@@ -4,7 +4,7 @@ import { useSearchParams } from "next/navigation";
|
|||||||
// editor
|
// editor
|
||||||
import { EditorRefApi } from "@plane/editor";
|
import { EditorRefApi } from "@plane/editor";
|
||||||
// types
|
// types
|
||||||
import { TPage } from "@plane/types";
|
import { TDocumentPayload, TPage, TPageVersion } from "@plane/types";
|
||||||
// ui
|
// ui
|
||||||
import { setToast, TOAST_TYPE } from "@plane/ui";
|
import { setToast, TOAST_TYPE } from "@plane/ui";
|
||||||
// components
|
// components
|
||||||
@@ -14,21 +14,25 @@ import { useProjectPages } from "@/hooks/store";
|
|||||||
import { useAppRouter } from "@/hooks/use-app-router";
|
import { useAppRouter } from "@/hooks/use-app-router";
|
||||||
import { usePageFallback } from "@/hooks/use-page-fallback";
|
import { usePageFallback } from "@/hooks/use-page-fallback";
|
||||||
import { useQueryParams } from "@/hooks/use-query-params";
|
import { useQueryParams } from "@/hooks/use-query-params";
|
||||||
// services
|
|
||||||
import { ProjectPageService, ProjectPageVersionService } from "@/services/page";
|
|
||||||
const projectPageService = new ProjectPageService();
|
|
||||||
const projectPageVersionService = new ProjectPageVersionService();
|
|
||||||
// store
|
// store
|
||||||
import { IPage } from "@/store/pages/page";
|
import { IPage } from "@/store/pages/page";
|
||||||
|
|
||||||
type TPageRootProps = {
|
type TPageRootProps = {
|
||||||
|
descriptionHandler: {
|
||||||
|
fetch: () => Promise<any>;
|
||||||
|
update: (data: TDocumentPayload) => Promise<void>;
|
||||||
|
};
|
||||||
page: IPage;
|
page: IPage;
|
||||||
projectId: string;
|
projectId: string;
|
||||||
|
versionHistoryHandler: {
|
||||||
|
fetchAll: (pageId: string) => Promise<TPageVersion[] | undefined>;
|
||||||
|
fetchDetails: (pageId: string, versionId: string) => Promise<TPageVersion | undefined>;
|
||||||
|
};
|
||||||
workspaceSlug: string;
|
workspaceSlug: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PageRoot = observer((props: TPageRootProps) => {
|
export const PageRoot = observer((props: TPageRootProps) => {
|
||||||
const { projectId, workspaceSlug, page } = props;
|
const { descriptionHandler, page, projectId, versionHistoryHandler, workspaceSlug } = props;
|
||||||
// states
|
// states
|
||||||
const [editorReady, setEditorReady] = useState(false);
|
const [editorReady, setEditorReady] = useState(false);
|
||||||
const [hasConnectionFailed, setHasConnectionFailed] = useState(false);
|
const [hasConnectionFailed, setHasConnectionFailed] = useState(false);
|
||||||
@@ -43,16 +47,13 @@ export const PageRoot = observer((props: TPageRootProps) => {
|
|||||||
// store hooks
|
// store hooks
|
||||||
const { createPage } = useProjectPages();
|
const { createPage } = useProjectPages();
|
||||||
// derived values
|
// derived values
|
||||||
const { access, description_html, name, isContentEditable, updateDescription } = page;
|
const { access, description_html, name, isContentEditable } = page;
|
||||||
// page fallback
|
// page fallback
|
||||||
usePageFallback({
|
usePageFallback({
|
||||||
editorRef,
|
editorRef,
|
||||||
fetchPageDescription: async () => {
|
fetchPageDescription: async () => await descriptionHandler.fetch(),
|
||||||
if (!page.id) return;
|
|
||||||
return await projectPageService.fetchDescriptionBinary(workspaceSlug, projectId, page.id);
|
|
||||||
},
|
|
||||||
hasConnectionFailed,
|
hasConnectionFailed,
|
||||||
updatePageDescription: async (data) => await updateDescription(data),
|
updatePageDescription: async (data) => await descriptionHandler.update(data),
|
||||||
});
|
});
|
||||||
// update query params
|
// update query params
|
||||||
const { updateQueryParams } = useQueryParams();
|
const { updateQueryParams } = useQueryParams();
|
||||||
@@ -105,23 +106,8 @@ export const PageRoot = observer((props: TPageRootProps) => {
|
|||||||
activeVersion={version}
|
activeVersion={version}
|
||||||
currentVersionDescription={currentVersionDescription ?? null}
|
currentVersionDescription={currentVersionDescription ?? null}
|
||||||
editorComponent={PagesVersionEditor}
|
editorComponent={PagesVersionEditor}
|
||||||
fetchAllVersions={async (pageId) => {
|
fetchAllVersions={async (pageId) => await versionHistoryHandler.fetchAll(pageId)}
|
||||||
if (!workspaceSlug || !projectId) return;
|
fetchVersionDetails={async (pageId, versionId) => await versionHistoryHandler.fetchDetails(pageId, versionId)}
|
||||||
return await projectPageVersionService.fetchAllVersions(
|
|
||||||
workspaceSlug.toString(),
|
|
||||||
projectId.toString(),
|
|
||||||
pageId
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
fetchVersionDetails={async (pageId, versionId) => {
|
|
||||||
if (!workspaceSlug || !projectId) return;
|
|
||||||
return await projectPageVersionService.fetchVersionById(
|
|
||||||
workspaceSlug.toString(),
|
|
||||||
projectId.toString(),
|
|
||||||
pageId,
|
|
||||||
versionId
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
handleRestore={handleRestoreVersion}
|
handleRestore={handleRestoreVersion}
|
||||||
isOpen={isVersionsOverlayOpen}
|
isOpen={isVersionsOverlayOpen}
|
||||||
onClose={handleCloseVersionsOverlay}
|
onClose={handleCloseVersionsOverlay}
|
||||||
|
|||||||
Reference in New Issue
Block a user