chore: add authorization to restore version (#5444)

This commit is contained in:
Aaryan Khandelwal
2024-08-28 14:03:01 +05:30
committed by GitHub
parent e6baa6fa2c
commit fb2a04dc14
4 changed files with 29 additions and 10 deletions

View File

@@ -15,20 +15,21 @@ 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<Props> = observer((props) => {
const { activeVersion, isCurrentVersionActive, versionDetails } = props;
const { activeVersion, isCurrentVersionActive, pageId, versionDetails } = props;
// params
const { workspaceSlug, projectId, pageId } = useParams();
const { workspaceSlug, projectId } = useParams();
// store hooks
const { data: currentUser } = useUser();
const {
getUserDetails,
project: { getProjectMemberIds },
} = useMember();
const { description_html } = usePage(pageId.toString() ?? "");
const currentPageDetails = usePage(pageId);
// derived values
const projectMemberIds = projectId ? getProjectMemberIds(projectId.toString()) : [];
const projectMemberDetails = projectMemberIds?.map((id) => getUserDetails(id) as IUserLite);
@@ -94,7 +95,9 @@ export const PagesVersionEditor: React.FC<Props> = observer((props) => {
return (
<DocumentReadOnlyEditorWithRef
id={activeVersion ?? ""}
initialValue={(isCurrentVersionActive ? description_html : versionDetails?.description_html) ?? "<p></p>"}
initialValue={
(isCurrentVersionActive ? currentPageDetails.description_html : versionDetails?.description_html) ?? "<p></p>"
}
containerClassName="p-0 pb-64 border-none"
displayConfig={displayConfig}
editorClassName="pl-10"

View File

@@ -43,7 +43,7 @@ export const PageRoot = observer((props: TPageRootProps) => {
// store hooks
const { createPage } = useProjectPages();
// derived values
const { access, description_html, name } = page;
const { access, description_html, name, isContentEditable } = page;
// editor markings hook
const { markings, updateMarkings } = useEditorMarkings();
// project-description
@@ -123,6 +123,7 @@ export const PageRoot = observer((props: TPageRootProps) => {
isOpen={isVersionsOverlayOpen}
onClose={handleCloseVersionsOverlay}
pageId={page.id ?? ""}
restoreEnabled={isContentEditable}
/>
<PageEditorHeaderRoot
editorRef={editorRef}

View File

@@ -17,10 +17,11 @@ type Props = {
handleClose: () => void;
handleRestore: (descriptionHTML: string) => Promise<void>;
pageId: string;
restoreEnabled: boolean;
};
export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
const { activeVersion, fetchVersionDetails, handleClose, handleRestore, pageId } = props;
const { activeVersion, fetchVersionDetails, handleClose, handleRestore, pageId, restoreEnabled } = props;
// states
const [isRestoring, setIsRestoring] = useState(false);
const [isRetrying, setIsRetrying] = useState(false);
@@ -37,6 +38,7 @@ export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
const isCurrentVersionActive = activeVersion === "current";
const handleRestoreVersion = async () => {
if (!restoreEnabled) return;
setIsRestoring(true);
await handleRestore(versionDetails?.description_html ?? "<p></p>")
.then(() => {
@@ -88,7 +90,7 @@ export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
? `${renderFormattedDate(versionDetails.last_saved_at)} ${renderFormattedTime(versionDetails.last_saved_at)}`
: "Loading version details"}
</h6>
{!isCurrentVersionActive && (
{!isCurrentVersionActive && restoreEnabled && (
<Button
variant="primary"
size="sm"
@@ -104,6 +106,7 @@ export const PageVersionsMainContent: React.FC<Props> = observer((props) => {
<PagesVersionEditor
activeVersion={activeVersion}
isCurrentVersionActive={isCurrentVersionActive}
pageId={pageId}
versionDetails={versionDetails}
/>
</div>

View File

@@ -1,3 +1,4 @@
import { observer } from "mobx-react";
// plane types
import { TPageVersion } from "@plane/types";
// components
@@ -13,10 +14,20 @@ type Props = {
isOpen: boolean;
onClose: () => void;
pageId: string;
restoreEnabled: boolean;
};
export const PageVersionsOverlay: React.FC<Props> = (props) => {
const { activeVersion, fetchAllVersions, fetchVersionDetails, handleRestore, isOpen, onClose, pageId } = props;
export const PageVersionsOverlay: React.FC<Props> = observer((props) => {
const {
activeVersion,
fetchAllVersions,
fetchVersionDetails,
handleRestore,
isOpen,
onClose,
pageId,
restoreEnabled,
} = props;
const handleClose = () => {
onClose();
@@ -37,6 +48,7 @@ export const PageVersionsOverlay: React.FC<Props> = (props) => {
handleClose={handleClose}
handleRestore={handleRestore}
pageId={pageId}
restoreEnabled={restoreEnabled}
/>
<PageVersionsSidebarRoot
activeVersion={activeVersion}
@@ -47,4 +59,4 @@ export const PageVersionsOverlay: React.FC<Props> = (props) => {
/>
</div>
);
};
});