Skip to content

Commit fb2a04d

Browse files
authored
chore: add authorization to restore version (#5444)
1 parent e6baa6f commit fb2a04d

File tree

4 files changed

+29
-10
lines changed

4 files changed

+29
-10
lines changed

web/ce/components/pages/version/editor.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,21 @@ import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed";
1515
type Props = {
1616
activeVersion: string | null;
1717
isCurrentVersionActive: boolean;
18+
pageId: string;
1819
versionDetails: TPageVersion | undefined;
1920
};
2021

2122
export const PagesVersionEditor: React.FC<Props> = observer((props) => {
22-
const { activeVersion, isCurrentVersionActive, versionDetails } = props;
23+
const { activeVersion, isCurrentVersionActive, pageId, versionDetails } = props;
2324
// params
24-
const { workspaceSlug, projectId, pageId } = useParams();
25+
const { workspaceSlug, projectId } = useParams();
2526
// store hooks
2627
const { data: currentUser } = useUser();
2728
const {
2829
getUserDetails,
2930
project: { getProjectMemberIds },
3031
} = useMember();
31-
const { description_html } = usePage(pageId.toString() ?? "");
32+
const currentPageDetails = usePage(pageId);
3233
// derived values
3334
const projectMemberIds = projectId ? getProjectMemberIds(projectId.toString()) : [];
3435
const projectMemberDetails = projectMemberIds?.map((id) => getUserDetails(id) as IUserLite);
@@ -94,7 +95,9 @@ export const PagesVersionEditor: React.FC<Props> = observer((props) => {
9495
return (
9596
<DocumentReadOnlyEditorWithRef
9697
id={activeVersion ?? ""}
97-
initialValue={(isCurrentVersionActive ? description_html : versionDetails?.description_html) ?? "<p></p>"}
98+
initialValue={
99+
(isCurrentVersionActive ? currentPageDetails.description_html : versionDetails?.description_html) ?? "<p></p>"
100+
}
98101
containerClassName="p-0 pb-64 border-none"
99102
displayConfig={displayConfig}
100103
editorClassName="pl-10"

web/core/components/pages/editor/page-root.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export const PageRoot = observer((props: TPageRootProps) => {
4343
// store hooks
4444
const { createPage } = useProjectPages();
4545
// derived values
46-
const { access, description_html, name } = page;
46+
const { access, description_html, name, isContentEditable } = page;
4747
// editor markings hook
4848
const { markings, updateMarkings } = useEditorMarkings();
4949
// project-description
@@ -123,6 +123,7 @@ export const PageRoot = observer((props: TPageRootProps) => {
123123
isOpen={isVersionsOverlayOpen}
124124
onClose={handleCloseVersionsOverlay}
125125
pageId={page.id ?? ""}
126+
restoreEnabled={isContentEditable}
126127
/>
127128
<PageEditorHeaderRoot
128129
editorRef={editorRef}

web/core/components/pages/version/main-content.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ type Props = {
1717
handleClose: () => void;
1818
handleRestore: (descriptionHTML: string) => Promise<void>;
1919
pageId: string;
20+
restoreEnabled: boolean;
2021
};
2122

2223
export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
23-
const { activeVersion, fetchVersionDetails, handleClose, handleRestore, pageId } = props;
24+
const { activeVersion, fetchVersionDetails, handleClose, handleRestore, pageId, restoreEnabled } = props;
2425
// states
2526
const [isRestoring, setIsRestoring] = useState(false);
2627
const [isRetrying, setIsRetrying] = useState(false);
@@ -37,6 +38,7 @@ export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
3738
const isCurrentVersionActive = activeVersion === "current";
3839

3940
const handleRestoreVersion = async () => {
41+
if (!restoreEnabled) return;
4042
setIsRestoring(true);
4143
await handleRestore(versionDetails?.description_html ?? "<p></p>")
4244
.then(() => {
@@ -88,7 +90,7 @@ export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
8890
? `${renderFormattedDate(versionDetails.last_saved_at)} ${renderFormattedTime(versionDetails.last_saved_at)}`
8991
: "Loading version details"}
9092
</h6>
91-
{!isCurrentVersionActive && (
93+
{!isCurrentVersionActive && restoreEnabled && (
9294
<Button
9395
variant="primary"
9496
size="sm"
@@ -104,6 +106,7 @@ export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
104106
<PagesVersionEditor
105107
activeVersion={activeVersion}
106108
isCurrentVersionActive={isCurrentVersionActive}
109+
pageId={pageId}
107110
versionDetails={versionDetails}
108111
/>
109112
</div>

web/core/components/pages/version/root.tsx

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { observer } from "mobx-react";
12
// plane types
23
import { TPageVersion } from "@plane/types";
34
// components
@@ -13,10 +14,20 @@ type Props = {
1314
isOpen: boolean;
1415
onClose: () => void;
1516
pageId: string;
17+
restoreEnabled: boolean;
1618
};
1719

18-
export const PageVersionsOverlay: React.FC<Props> = (props) => {
19-
const { activeVersion, fetchAllVersions, fetchVersionDetails, handleRestore, isOpen, onClose, pageId } = props;
20+
export const PageVersionsOverlay: React.FC<Props> = observer((props) => {
21+
const {
22+
activeVersion,
23+
fetchAllVersions,
24+
fetchVersionDetails,
25+
handleRestore,
26+
isOpen,
27+
onClose,
28+
pageId,
29+
restoreEnabled,
30+
} = props;
2031

2132
const handleClose = () => {
2233
onClose();
@@ -37,6 +48,7 @@ export const PageVersionsOverlay: React.FC<Props> = (props) => {
3748
handleClose={handleClose}
3849
handleRestore={handleRestore}
3950
pageId={pageId}
51+
restoreEnabled={restoreEnabled}
4052
/>
4153
<PageVersionsSidebarRoot
4254
activeVersion={activeVersion}
@@ -47,4 +59,4 @@ export const PageVersionsOverlay: React.FC<Props> = (props) => {
4759
/>
4860
</div>
4961
);
50-
};
62+
});

0 commit comments

Comments
 (0)