From bfdddab0a097b1eb27e2cb1810afa3888a625844 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 2 Jan 2026 18:20:55 +0200 Subject: [PATCH] refactor(client): format revisions dialog --- apps/client/src/widgets/dialogs/revisions.tsx | 116 +++++++++--------- 1 file changed, 59 insertions(+), 57 deletions(-) diff --git a/apps/client/src/widgets/dialogs/revisions.tsx b/apps/client/src/widgets/dialogs/revisions.tsx index 322abdd3b..2f4d67a52 100644 --- a/apps/client/src/widgets/dialogs/revisions.tsx +++ b/apps/client/src/widgets/dialogs/revisions.tsx @@ -1,26 +1,28 @@ -import type { RevisionPojo, RevisionItem } from "@triliumnext/commons"; +import "./revisions.css"; + +import type { RevisionItem,RevisionPojo } from "@triliumnext/commons"; +import { diffWords } from "diff"; +import type { CSSProperties } from "preact/compat"; +import { Dispatch, StateUpdater, useEffect, useRef, useState } from "preact/hooks"; + import appContext from "../../components/app_context"; import FNote from "../../entities/fnote"; import dialog from "../../services/dialog"; import froca from "../../services/froca"; import { t } from "../../services/i18n"; +import { renderMathInElement } from "../../services/math"; +import open from "../../services/open"; +import options from "../../services/options"; +import protected_session_holder from "../../services/protected_session_holder"; import server from "../../services/server"; import toast from "../../services/toast"; -import Button from "../react/Button"; -import FormToggle from "../react/FormToggle"; -import Modal from "../react/Modal"; -import FormList, { FormListItem } from "../react/FormList"; import utils from "../../services/utils"; -import { Dispatch, StateUpdater, useEffect, useRef, useState } from "preact/hooks"; -import protected_session_holder from "../../services/protected_session_holder"; -import { renderMathInElement } from "../../services/math"; -import type { CSSProperties } from "preact/compat"; -import open from "../../services/open"; import ActionButton from "../react/ActionButton"; -import options from "../../services/options"; +import Button from "../react/Button"; +import FormList, { FormListItem } from "../react/FormList"; +import FormToggle from "../react/FormToggle"; import { useTriliumEvent } from "../react/hooks"; -import { diffWords } from "diff"; -import "./revisions.css"; +import Modal from "../react/Modal"; export default function RevisionsDialog() { const [ note, setNote ] = useState(); @@ -102,38 +104,38 @@ export default function RevisionsDialog() { setRevisions(undefined); }} show={shown} - > - { - const correspondingRevision = (revisions ?? []).find((r) => r.revisionId === revisionId); - if (correspondingRevision) { - setCurrentRevision(correspondingRevision); - } - }} - currentRevision={currentRevision} - /> + > + { + const correspondingRevision = (revisions ?? []).find((r) => r.revisionId === revisionId); + if (correspondingRevision) { + setCurrentRevision(correspondingRevision); + } + }} + currentRevision={currentRevision} + /> -
- { - setRefreshCounter(c => c + 1); - setCurrentRevision(undefined); - }} /> -
+
+ { + setRefreshCounter(c => c + 1); + setCurrentRevision(undefined); + }} /> +
- ) + ); } function RevisionsList({ revisions, onSelect, currentRevision }: { revisions: RevisionItem[], onSelect: (val: string) => void, currentRevision?: RevisionItem }) { @@ -202,8 +204,8 @@ function RevisionPreview({noteContent, revisionItem, showDiff, setShown, onRevis text={t("revisions.download_button")} onClick={() => { if (revisionItem.revisionId) { - open.downloadRevision(revisionItem.noteId, revisionItem.revisionId)} - } + open.downloadRevision(revisionItem.noteId, revisionItem.revisionId);} + } }/> } @@ -235,11 +237,11 @@ function RevisionContent({ noteContent, revisionItem, fullRevision, showDiff }: } if (showDiff) { - return + return ; } switch (revisionItem.type) { case "text": - return + return ; case "code": return
{content}
; case "image": @@ -256,7 +258,7 @@ function RevisionContent({ noteContent, revisionItem, fullRevision, showDiff }: // as a URL to be used in a note. Instead, if they copy and paste it into a note, it will be uploaded as a new note return + style={IMAGE_STYLE} />; } } case "file": @@ -287,7 +289,7 @@ function RevisionContent({ noteContent, revisionItem, fullRevision, showDiff }: style={IMAGE_STYLE} />; } default: - return <>{t("revisions.preview_not_available")} + return <>{t("revisions.preview_not_available")}; } } @@ -298,7 +300,7 @@ function RevisionContentText({ content }: { content: string | Buffer + return
; } function RevisionContentDiff({ noteContent, itemContent, itemType }: { @@ -330,9 +332,9 @@ function RevisionContentDiff({ noteContent, itemContent, itemType }: { return `${utils.escapeHtml(part.value)}`; } else if (part.removed) { return `${utils.escapeHtml(part.value)}`; - } else { - return utils.escapeHtml(part.value); - } + } + return utils.escapeHtml(part.value); + }).join(""); if (contentRef.current) { @@ -340,7 +342,7 @@ function RevisionContentDiff({ noteContent, itemContent, itemType }: { } }, [noteContent, itemContent, itemType]); - return
; + return
; } function RevisionFooter({ note }: { note?: FNote }) { @@ -373,7 +375,7 @@ function RevisionFooter({ note }: { note?: FNote }) { async function getNote(noteId?: string | null) { if (noteId) { return await froca.getNote(noteId); - } else { - return appContext.tabManager.getActiveContextNote(); - } + } + return appContext.tabManager.getActiveContextNote(); + }