From 998d7d9a8ec3fbcecaf5eebc64d063eb8b752709 Mon Sep 17 00:00:00 2001
From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Date: Wed, 28 Aug 2024 16:05:59 +0530
Subject: [PATCH 1/4] refactor: version history editor (#977)
---
web/ee/components/pages/editor/page-root.tsx | 2 +-
web/ee/components/pages/version/editor.tsx | 26 +++++++++++++-------
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/web/ee/components/pages/editor/page-root.tsx b/web/ee/components/pages/editor/page-root.tsx
index c18c45a2c2..13f0a847fb 100644
--- a/web/ee/components/pages/editor/page-root.tsx
+++ b/web/ee/components/pages/editor/page-root.tsx
@@ -29,6 +29,7 @@ type TPageRootProps = {
};
export const WorkspacePageRoot = observer((props: TPageRootProps) => {
+ const { workspaceSlug, page } = props;
// states
const [editorReady, setEditorReady] = useState(false);
const [readOnlyEditorReady, setReadOnlyEditorReady] = useState(false);
@@ -39,7 +40,6 @@ export const WorkspacePageRoot = observer((props: TPageRootProps) => {
const readOnlyEditorRef = useRef(null);
// router
const router = useAppRouter();
- const { workspaceSlug, page } = props;
// search params
const searchParams = useSearchParams();
// store hooks
diff --git a/web/ee/components/pages/version/editor.tsx b/web/ee/components/pages/version/editor.tsx
index 6550ef1399..29e6725aee 100644
--- a/web/ee/components/pages/version/editor.tsx
+++ b/web/ee/components/pages/version/editor.tsx
@@ -9,37 +9,37 @@ import { Loader } from "@plane/ui";
// hooks
import { useMember, useUser } from "@/hooks/store";
import { usePageFilters } from "@/hooks/use-page-filters";
+// plane web components
+import { IssueEmbedCard } from "@/plane-web/components/pages";
// plane web hooks
import { useWorkspacePageDetails } from "@/plane-web/hooks/store";
-import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed";
import { useWorkspaceMention } from "@/plane-web/hooks/use-workspace-mention";
type Props = {
activeVersion: string | null;
isCurrentVersionActive: boolean;
+ pageId: string;
versionDetails: TPageVersion | undefined;
};
export const PagesVersionEditor: React.FC = observer((props) => {
- const { activeVersion, isCurrentVersionActive, versionDetails } = props;
+ const { activeVersion, isCurrentVersionActive, pageId, versionDetails } = props;
// params
- const { workspaceSlug, projectId, pageId } = useParams();
+ const { workspaceSlug } = useParams();
// store hooks
const { data: currentUser } = useUser();
const {
getUserDetails,
workspace: { workspaceMemberIds },
} = useMember();
- const { description_html } = useWorkspacePageDetails(pageId.toString() ?? "");
+ const currentPageDetails = useWorkspacePageDetails(pageId);
// derived values
const workspaceMemberDetails = workspaceMemberIds?.map((id) => getUserDetails(id) as IUserLite);
- // issue-embed
- const { issueEmbedProps } = useIssueEmbed(workspaceSlug?.toString() ?? "", projectId?.toString() ?? "");
// use-mention
const { mentionHighlights } = useWorkspaceMention({
workspaceSlug: workspaceSlug?.toString() ?? "",
members: workspaceMemberDetails,
- user: currentUser ?? undefined,
+ user: currentUser,
});
// page filters
const { fontSize, fontStyle } = usePageFilters();
@@ -94,7 +94,9 @@ export const PagesVersionEditor: React.FC = observer((props) => {
return (
"}
+ initialValue={
+ (isCurrentVersionActive ? currentPageDetails.description_html : versionDetails?.description_html) ?? ""
+ }
containerClassName="p-0 pb-64 border-none"
displayConfig={displayConfig}
editorClassName="pl-10"
@@ -103,7 +105,13 @@ export const PagesVersionEditor: React.FC = observer((props) => {
}}
embedHandler={{
issue: {
- widgetCallback: issueEmbedProps.widgetCallback,
+ widgetCallback: ({ issueId, projectId: projectIdFromEmbed, workspaceSlug: workspaceSlugFromEmbed }) => {
+ const resolvedProjectId = projectIdFromEmbed ?? "";
+ const resolvedWorkspaceSlug = workspaceSlugFromEmbed ?? workspaceSlug?.toString() ?? "";
+ return (
+
+ );
+ },
},
}}
/>
From 4de6b4c1d246ac32686820e82088618d1ff1c8ca Mon Sep 17 00:00:00 2001
From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Date: Wed, 28 Aug 2024 17:01:53 +0530
Subject: [PATCH 2/4] [WEB-2293] fix: version history editor initialization
(#978)
* fix: initialize editor post description availability
* fix: merge conflicts resolved from uat
---
web/ee/components/pages/version/editor.tsx | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/web/ee/components/pages/version/editor.tsx b/web/ee/components/pages/version/editor.tsx
index 29e6725aee..e03264c01c 100644
--- a/web/ee/components/pages/version/editor.tsx
+++ b/web/ee/components/pages/version/editor.tsx
@@ -91,12 +91,13 @@ export const PagesVersionEditor: React.FC = observer((props) => {
);
+ const description = isCurrentVersionActive ? currentPageDetails.description_html : versionDetails?.description_html;
+ if (description === undefined || description?.trim() === "") return null;
+
return (
"
- }
+ initialValue={description ?? ""}
containerClassName="p-0 pb-64 border-none"
displayConfig={displayConfig}
editorClassName="pl-10"
From f45bede124b909104ea886fd3221f1254cf81168 Mon Sep 17 00:00:00 2001
From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Date: Wed, 28 Aug 2024 17:36:49 +0530
Subject: [PATCH 3/4] fix: removed unnecessary editor component (#979)
---
web/core/components/pages/version/editor.tsx | 114 ------------------
web/core/components/pages/version/index.ts | 1 -
.../components/pages/version/main-content.tsx | 4 +-
3 files changed, 2 insertions(+), 117 deletions(-)
delete mode 100644 web/core/components/pages/version/editor.tsx
diff --git a/web/core/components/pages/version/editor.tsx b/web/core/components/pages/version/editor.tsx
deleted file mode 100644
index d176022bc5..0000000000
--- a/web/core/components/pages/version/editor.tsx
+++ /dev/null
@@ -1,114 +0,0 @@
-import { observer } from "mobx-react";
-import { useParams } from "next/navigation";
-// plane editor
-import { DocumentReadOnlyEditorWithRef, TDisplayConfig } from "@plane/editor";
-// plane types
-import { IUserLite, TPageVersion } from "@plane/types";
-// plane ui
-import { Loader } from "@plane/ui";
-// hooks
-import { useMember, useMention, usePage, useUser } from "@/hooks/store";
-import { usePageFilters } from "@/hooks/use-page-filters";
-// plane web hooks
-import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed";
-
-type Props = {
- activeVersion: string | null;
- isCurrentVersionActive: boolean;
- pageId: string;
- versionDetails: TPageVersion | undefined;
-};
-
-export const PagesVersionEditor: React.FC = observer((props) => {
- const { activeVersion, isCurrentVersionActive, pageId, versionDetails } = props;
- // params
- const { workspaceSlug, projectId } = useParams();
- // store hooks
- const { data: currentUser } = useUser();
- const {
- getUserDetails,
- project: { getProjectMemberIds },
- } = useMember();
- const currentPageDetails = usePage(pageId);
- // derived values
- const projectMemberIds = projectId ? getProjectMemberIds(projectId.toString()) : [];
- const projectMemberDetails = projectMemberIds?.map((id) => getUserDetails(id) as IUserLite);
- // issue-embed
- const { issueEmbedProps } = useIssueEmbed(workspaceSlug?.toString() ?? "", projectId?.toString() ?? "");
- // use-mention
- const { mentionHighlights } = useMention({
- workspaceSlug: workspaceSlug?.toString() ?? "",
- projectId: projectId?.toString() ?? "",
- members: projectMemberDetails,
- user: currentUser ?? undefined,
- });
- // page filters
- const { fontSize, fontStyle } = usePageFilters();
-
- const displayConfig: TDisplayConfig = {
- fontSize,
- fontStyle,
- };
-
- if (!isCurrentVersionActive && !versionDetails)
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-
- return (
- "
- }
- containerClassName="p-0 pb-64 border-none"
- displayConfig={displayConfig}
- editorClassName="pl-10"
- mentionHandler={{
- highlights: mentionHighlights,
- }}
- embedHandler={{
- issue: {
- widgetCallback: issueEmbedProps.widgetCallback,
- },
- }}
- />
- );
-});
diff --git a/web/core/components/pages/version/index.ts b/web/core/components/pages/version/index.ts
index 8e04e4de9e..f0570ebecd 100644
--- a/web/core/components/pages/version/index.ts
+++ b/web/core/components/pages/version/index.ts
@@ -1,4 +1,3 @@
-export * from "./editor";
export * from "./main-content";
export * from "./root";
export * from "./sidebar-list-item";
diff --git a/web/core/components/pages/version/main-content.tsx b/web/core/components/pages/version/main-content.tsx
index 186240a243..5bfe29bb29 100644
--- a/web/core/components/pages/version/main-content.tsx
+++ b/web/core/components/pages/version/main-content.tsx
@@ -6,10 +6,10 @@ import { TriangleAlert } from "lucide-react";
import { TPageVersion } from "@plane/types";
// plane ui
import { Button, setToast, TOAST_TYPE } from "@plane/ui";
-// components
-import { PagesVersionEditor } from "@/components/pages";
// helpers
import { renderFormattedDate, renderFormattedTime } from "@/helpers/date-time.helper";
+// components
+import { PagesVersionEditor } from "@/plane-web/components/pages";
type Props = {
activeVersion: string | null;
From a96cf402c07faba1bbab7addb0beac40eba29348 Mon Sep 17 00:00:00 2001
From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Date: Tue, 27 Aug 2024 19:50:07 +0530
Subject: [PATCH 4/4] fix: version editor
---
web/ce/components/pages/index.ts | 1 +
web/ce/components/pages/version/editor.tsx | 115 ++++++++++++++++++
web/ce/components/pages/version/index.ts | 1 +
.../components/pages/version/main-content.tsx | 2 +-
4 files changed, 118 insertions(+), 1 deletion(-)
create mode 100644 web/ce/components/pages/version/editor.tsx
create mode 100644 web/ce/components/pages/version/index.ts
diff --git a/web/ce/components/pages/index.ts b/web/ce/components/pages/index.ts
index 6f3d30c9a9..715386d0d0 100644
--- a/web/ce/components/pages/index.ts
+++ b/web/ce/components/pages/index.ts
@@ -1,2 +1,3 @@
export * from "./editor";
+export * from "./version";
export * from "./extra-actions";
diff --git a/web/ce/components/pages/version/editor.tsx b/web/ce/components/pages/version/editor.tsx
new file mode 100644
index 0000000000..56615c7246
--- /dev/null
+++ b/web/ce/components/pages/version/editor.tsx
@@ -0,0 +1,115 @@
+import { observer } from "mobx-react";
+import { useParams } from "next/navigation";
+// plane editor
+import { DocumentReadOnlyEditorWithRef, TDisplayConfig } from "@plane/editor";
+// plane types
+import { IUserLite, TPageVersion } from "@plane/types";
+// plane ui
+import { Loader } from "@plane/ui";
+// hooks
+import { useMember, useMention, usePage, useUser } from "@/hooks/store";
+import { usePageFilters } from "@/hooks/use-page-filters";
+// plane web hooks
+import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed";
+
+type Props = {
+ activeVersion: string | null;
+ isCurrentVersionActive: boolean;
+ pageId: string;
+ versionDetails: TPageVersion | undefined;
+};
+
+export const PagesVersionEditor: React.FC = observer((props) => {
+ const { activeVersion, isCurrentVersionActive, pageId, versionDetails } = props;
+ // params
+ const { workspaceSlug, projectId } = useParams();
+ // store hooks
+ const { data: currentUser } = useUser();
+ const {
+ getUserDetails,
+ project: { getProjectMemberIds },
+ } = useMember();
+ const currentPageDetails = usePage(pageId);
+ // derived values
+ const projectMemberIds = projectId ? getProjectMemberIds(projectId.toString()) : [];
+ const projectMemberDetails = projectMemberIds?.map((id) => getUserDetails(id) as IUserLite);
+ // issue-embed
+ const { issueEmbedProps } = useIssueEmbed(workspaceSlug?.toString() ?? "", projectId?.toString() ?? "");
+ // use-mention
+ const { mentionHighlights } = useMention({
+ workspaceSlug: workspaceSlug?.toString() ?? "",
+ projectId: projectId?.toString() ?? "",
+ members: projectMemberDetails,
+ user: currentUser ?? undefined,
+ });
+ // page filters
+ const { fontSize, fontStyle } = usePageFilters();
+
+ const displayConfig: TDisplayConfig = {
+ fontSize,
+ fontStyle,
+ };
+
+ if (!isCurrentVersionActive && !versionDetails)
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const description = isCurrentVersionActive ? currentPageDetails.description_html : versionDetails?.description_html;
+ if (description === undefined || description?.trim() === "") return null;
+
+ return (
+ "}
+ containerClassName="p-0 pb-64 border-none"
+ displayConfig={displayConfig}
+ editorClassName="pl-10"
+ mentionHandler={{
+ highlights: mentionHighlights,
+ }}
+ embedHandler={{
+ issue: {
+ widgetCallback: issueEmbedProps.widgetCallback,
+ },
+ }}
+ />
+ );
+});
diff --git a/web/ce/components/pages/version/index.ts b/web/ce/components/pages/version/index.ts
new file mode 100644
index 0000000000..8b1fd904bb
--- /dev/null
+++ b/web/ce/components/pages/version/index.ts
@@ -0,0 +1 @@
+export * from "./editor";
diff --git a/web/core/components/pages/version/main-content.tsx b/web/core/components/pages/version/main-content.tsx
index 5bfe29bb29..f729556792 100644
--- a/web/core/components/pages/version/main-content.tsx
+++ b/web/core/components/pages/version/main-content.tsx
@@ -8,7 +8,7 @@ import { TPageVersion } from "@plane/types";
import { Button, setToast, TOAST_TYPE } from "@plane/ui";
// helpers
import { renderFormattedDate, renderFormattedTime } from "@/helpers/date-time.helper";
-// components
+// plane web components
import { PagesVersionEditor } from "@/plane-web/components/pages";
type Props = {