From 06a005aceca21e8cd5b8ff74f51d0662b41767e5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 15 Feb 2026 16:17:41 +0200 Subject: [PATCH] refactor(client/render_note): separate content from setup --- .../src/widgets/type_widgets/Render.tsx | 38 +++++++++++-------- packages/commons/src/lib/attribute_names.ts | 3 ++ 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/Render.tsx b/apps/client/src/widgets/type_widgets/Render.tsx index f47e58f2de..1f9d61d218 100644 --- a/apps/client/src/widgets/type_widgets/Render.tsx +++ b/apps/client/src/widgets/type_widgets/Render.tsx @@ -1,23 +1,33 @@ import "./Render.css"; -import { useEffect, useRef, useState } from "preact/hooks"; +import { useEffect, useRef } from "preact/hooks"; import attributes from "../../services/attributes"; import { t } from "../../services/i18n"; import render from "../../services/render"; import Alert from "../react/Alert"; -import { useTriliumEvent } from "../react/hooks"; +import { useNoteRelation, useTriliumEvent } from "../react/hooks"; import RawHtml from "../react/RawHtml"; import { refToJQuerySelector } from "../react/react_utils"; import { TypeWidgetProps } from "./type_widget"; -export default function Render({ note, noteContext, ntxId }: TypeWidgetProps) { +export default function Render(props: TypeWidgetProps) { + const { note } = props; + const [ renderNote ] = useNoteRelation(note, "renderNote"); + + if (!renderNote) { + return ; + } + + return ; +} + +function RenderContent({ note, noteContext, ntxId }: TypeWidgetProps) { const contentRef = useRef(null); - const [ renderNotesFound, setRenderNotesFound ] = useState(false); function refresh() { if (!contentRef) return; - render.render(note, refToJQuerySelector(contentRef)).then(setRenderNotesFound); + render.render(note, refToJQuerySelector(contentRef)); } useEffect(refresh, [ note ]); @@ -47,16 +57,14 @@ export default function Render({ note, noteContext, ntxId }: TypeWidgetProps) { resolve(refToJQuerySelector(contentRef)); }); - return ( - <> - {!renderNotesFound && ( - -

{t("render.note_detail_render_help_1")}

-

-
- )} + return
; +} -
- +function SetupRenderContent() { + return ( + +

{t("render.note_detail_render_help_1")}

+

+
); } diff --git a/packages/commons/src/lib/attribute_names.ts b/packages/commons/src/lib/attribute_names.ts index d5a63de04a..7a9534a5b7 100644 --- a/packages/commons/src/lib/attribute_names.ts +++ b/packages/commons/src/lib/attribute_names.ts @@ -78,6 +78,9 @@ type Relations = [ "searchScript", "ancestor", + // Active content + "renderNote", + // Launcher-specific "target", "widget"