chore(react/dialogs): add back content buttons to note revision

This commit is contained in:
Elian Doran 2025-08-06 17:01:32 +03:00
parent 958b1592f8
commit 7a0f148d28
No known key found for this signature in database

View File

@ -15,6 +15,7 @@ import { useEffect, useRef, useState } from "preact/hooks";
import protected_session_holder from "../../services/protected_session_holder"; import protected_session_holder from "../../services/protected_session_holder";
import { renderMathInElement } from "../../services/math"; import { renderMathInElement } from "../../services/math";
import { CSSProperties } from "preact/compat"; import { CSSProperties } from "preact/compat";
import open from "../../services/open";
interface RevisionsDialogProps { interface RevisionsDialogProps {
note?: FNote; note?: FNote;
@ -110,14 +111,16 @@ function RevisionsList({ revisions, onSelect }: { revisions: RevisionItem[], onS
function RevisionPreview({ revisionItem }: { revisionItem?: RevisionItem}) { function RevisionPreview({ revisionItem }: { revisionItem?: RevisionItem}) {
const [ fullRevision, setFullRevision ] = useState<FullRevision>(); const [ fullRevision, setFullRevision ] = useState<FullRevision>();
const [ needsRefresh, setNeedsRefresh ] = useState<boolean>();
useEffect(() => { useEffect(() => {
setNeedsRefresh(false);
if (revisionItem) { if (revisionItem) {
server.get<FullRevision>(`revisions/${revisionItem.revisionId}`).then(setFullRevision); server.get<FullRevision>(`revisions/${revisionItem.revisionId}`).then(setFullRevision);
} else { } else {
setFullRevision(undefined); setFullRevision(undefined);
} }
}, [revisionItem]); }, [revisionItem, needsRefresh]);
return ( return (
<> <>
@ -125,15 +128,35 @@ function RevisionPreview({ revisionItem }: { revisionItem?: RevisionItem}) {
<h3 className="revision-title" style="margin: 3px; flex-grow: 100;">{revisionItem?.title ?? t("revisions.no_revisions")}</h3> <h3 className="revision-title" style="margin: 3px; flex-grow: 100;">{revisionItem?.title ?? t("revisions.no_revisions")}</h3>
{(revisionItem && <div className="revision-title-buttons"> {(revisionItem && <div className="revision-title-buttons">
{(!revisionItem.isProtected || protected_session_holder.isProtectedSessionAvailable()) && {(!revisionItem.isProtected || protected_session_holder.isProtectedSessionAvailable()) &&
<Button icon="bx bx-history" <>
text={t("revisions.restore_button")} <Button
onClick={async () => { icon="bx bx-history"
if (await dialog.confirm(t("revisions.confirm_restore"))) { text={t("revisions.restore_button")}
await server.post(`revisions/${revisionItem.revisionId}/restore`); onClick={async () => {
closeActiveDialog(); if (await dialog.confirm(t("revisions.confirm_restore"))) {
toast.showMessage(t("revisions.revision_restored")); await server.post(`revisions/${revisionItem.revisionId}/restore`);
} closeActiveDialog();
}}/> toast.showMessage(t("revisions.revision_restored"));
}
}}/>
&nbsp;
<Button
icon="bx bx-trash"
text={t("revisions.delete_button")}
onClick={async () => {
if (await dialog.confirm(t("revisions.confirm_delete"))) {
await server.remove(`revisions/${revisionItem.revisionId}`);
setNeedsRefresh(true);
toast.showMessage(t("revisions.revision_deleted"));
}
}} />
&nbsp;
<Button
primary
icon="bx bx-download"
text={t("revisions.download_button")}
onClick={() => open.downloadRevision(revisionItem.noteId, revisionItem.revisionId)} />
</>
} }
</div>)} </div>)}
</div> </div>