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,7 +128,9 @@ 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" <>
<Button
icon="bx bx-history"
text={t("revisions.restore_button")} text={t("revisions.restore_button")}
onClick={async () => { onClick={async () => {
if (await dialog.confirm(t("revisions.confirm_restore"))) { if (await dialog.confirm(t("revisions.confirm_restore"))) {
@ -134,6 +139,24 @@ function RevisionPreview({ revisionItem }: { revisionItem?: RevisionItem}) {
toast.showMessage(t("revisions.revision_restored")); 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>