From 507910b0ce4be20c75c4405a2250369fe63fceee Mon Sep 17 00:00:00 2001 From: SiriusXT <1160925501@qq.com> Date: Tue, 28 Oct 2025 10:17:37 +0800 Subject: [PATCH 1/3] fix: import markdown to text note --- apps/client/src/components/app_context.ts | 3 +- apps/client/src/services/glob.ts | 3 -- apps/client/src/types.d.ts | 1 - .../src/widgets/dialogs/markdown_import.tsx | 38 +++++++------------ .../src/widgets/type_widgets/editable_text.ts | 28 ++++++++++++++ packages/ckeditor5/src/augmentation.ts | 1 - .../ckeditor5/src/plugins/markdownimport.ts | 5 ++- 7 files changed, 47 insertions(+), 32 deletions(-) diff --git a/apps/client/src/components/app_context.ts b/apps/client/src/components/app_context.ts index ce33d1447..f52f2e498 100644 --- a/apps/client/src/components/app_context.ts +++ b/apps/client/src/components/app_context.ts @@ -218,7 +218,6 @@ export type CommandMappings = { /** Works only in the electron context menu. */ replaceMisspelling: CommandData; - importMarkdownInline: CommandData; showPasswordNotSet: CommandData; showProtectedSessionPasswordDialog: CommandData; showUploadAttachmentsDialog: CommandData & { noteId: string }; @@ -306,7 +305,7 @@ export type CommandMappings = { addLinkToText: CommandData; followLinkUnderCursor: CommandData; insertDateTimeToText: CommandData; - pasteMarkdownIntoText: CommandData; + showMarkdownIntoTextDialog: CommandData & { textTypeWidget: EditableTextTypeWidget }; cutIntoNote: CommandData; addIncludeNoteToText: CommandData; editReadOnlyNote: CommandData; diff --git a/apps/client/src/services/glob.ts b/apps/client/src/services/glob.ts index 48d0d29a7..44ce64309 100644 --- a/apps/client/src/services/glob.ts +++ b/apps/client/src/services/glob.ts @@ -20,9 +20,6 @@ function setupGlobs() { window.glob.froca = froca; window.glob.treeCache = froca; // compatibility for CKEditor builds for a while - // for CKEditor integration (button on block toolbar) - window.glob.importMarkdownInline = async () => appContext.triggerCommand("importMarkdownInline"); - window.onerror = function (msg, url, lineNo, columnNo, error) { const string = String(msg).toLowerCase(); diff --git a/apps/client/src/types.d.ts b/apps/client/src/types.d.ts index c5a93bd0a..d283983b4 100644 --- a/apps/client/src/types.d.ts +++ b/apps/client/src/types.d.ts @@ -26,7 +26,6 @@ interface CustomGlobals { appContext: AppContext; froca: Froca; treeCache: Froca; - importMarkdownInline: () => Promise; SEARCH_HELP_TEXT: string; activeDialog: JQuery | null; componentId: string; diff --git a/apps/client/src/widgets/dialogs/markdown_import.tsx b/apps/client/src/widgets/dialogs/markdown_import.tsx index d14d6fb11..5676d7298 100644 --- a/apps/client/src/widgets/dialogs/markdown_import.tsx +++ b/apps/client/src/widgets/dialogs/markdown_import.tsx @@ -7,6 +7,7 @@ import utils from "../../services/utils"; import Modal from "../react/Modal"; import Button from "../react/Button"; import { useTriliumEvent } from "../react/hooks"; +import EditableTextTypeWidget from "../type_widgets/editable_text"; interface RenderMarkdownResponse { htmlContent: string; @@ -14,29 +15,27 @@ interface RenderMarkdownResponse { export default function MarkdownImportDialog() { const markdownImportTextArea = useRef(null); + const [textTypeWidget, setTextTypeWidget] = useState(); const [ text, setText ] = useState(""); const [ shown, setShown ] = useState(false); - const triggerImport = useCallback(() => { - if (appContext.tabManager.getActiveContextNoteType() !== "text") { - return; - } - + useTriliumEvent("showMarkdownIntoTextDialog", ({ textTypeWidget }) => { + setTextTypeWidget(textTypeWidget); if (utils.isElectron()) { const { clipboard } = utils.dynamicRequire("electron"); const text = clipboard.readText(); - convertMarkdownToHtml(text); + convertMarkdownToHtml(text, textTypeWidget); } else { setShown(true); } - }, []); - - useTriliumEvent("importMarkdownInline", triggerImport); - useTriliumEvent("pasteMarkdownIntoText", triggerImport); + }); async function sendForm() { - await convertMarkdownToHtml(text); + if (textTypeWidget) { + await convertMarkdownToHtml(text, textTypeWidget); + } + setText(""); setShown(false); } @@ -44,7 +43,7 @@ export default function MarkdownImportDialog() { return ( } + footer={