From 8a4ba4bee12e35111b896e201f87af6eab1df71c Mon Sep 17 00:00:00 2001 From: Jinjing <6427696+AmethystLiang@users.noreply.github.com> Date: Mon, 18 May 2026 21:08:02 -0700 Subject: [PATCH] fix: support rich markdown diff review (#2302) --- .../src/components/editor/EditorPanel.tsx | 39 ++++++++++--------- .../components/editor/EditorPanelHeader.tsx | 4 +- .../components/editor/EditorPanelShell.tsx | 2 +- .../editor/markdown-preview-controls.test.ts | 4 +- .../editor/markdown-preview-controls.ts | 8 ++-- 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/renderer/src/components/editor/EditorPanel.tsx b/src/renderer/src/components/editor/EditorPanel.tsx index 053d0614c..237e5c76c 100644 --- a/src/renderer/src/components/editor/EditorPanel.tsx +++ b/src/renderer/src/components/editor/EditorPanel.tsx @@ -174,24 +174,6 @@ function EditorPanelInner({ ) useEditorCmdSaveRequest({ activeFile, openFiles, fileContents, handleSave }) - const handleEditorToggleChange = useCallback( - (next: EditorToggleValue): void => { - const fileId = activeFile?.id - if (!fileId) { - return - } - if (next === 'changes') { - setEditorViewMode(fileId, 'changes') - return - } - setEditorViewMode(fileId, 'edit') - if (next !== 'edit') { - setMarkdownViewMode(fileId, next) - } - }, - [activeFile?.id, setEditorViewMode, setMarkdownViewMode] - ) - const handleCopyPath = useCallback(async (): Promise => { if (!activeFile) { return @@ -234,7 +216,7 @@ function EditorPanelInner({ sourceGroupId }) } - const handleOpenDiffTargetFile = (): void => { + const handleOpenDiffTargetFile = (preferredMarkdownViewMode?: 'rich'): void => { if (!model.openFileState.canOpen) { return } @@ -246,6 +228,25 @@ function EditorPanelInner({ language: detectLanguage(activeFile.relativePath), mode: 'edit' }) + if (preferredMarkdownViewMode) { + setEditorViewMode(activeFile.filePath, 'edit') + setMarkdownViewMode(activeFile.filePath, preferredMarkdownViewMode) + } + } + const handleEditorToggleChange = (next: EditorToggleValue): void => { + const fileId = activeFile.id + if (activeFile.mode === 'diff' && model.isMarkdown && next === 'rich') { + handleOpenDiffTargetFile('rich') + return + } + if (next === 'changes') { + setEditorViewMode(fileId, 'changes') + return + } + setEditorViewMode(fileId, 'edit') + if (next !== 'edit') { + setMarkdownViewMode(fileId, next) + } } const handleOpenMarkdownPreview = (): void => { openMarkdownPreview({ diff --git a/src/renderer/src/components/editor/EditorPanelHeader.tsx b/src/renderer/src/components/editor/EditorPanelHeader.tsx index e9e63339b..3034e2378 100644 --- a/src/renderer/src/components/editor/EditorPanelHeader.tsx +++ b/src/renderer/src/components/editor/EditorPanelHeader.tsx @@ -61,7 +61,7 @@ type EditorPanelHeaderProps = { sideBySide: boolean openFileState: EditorHeaderOpenFileState onCopyPath: () => void - onOpenDiffTargetFile: () => void + onOpenDiffTargetFile: (preferredMarkdownViewMode?: 'rich') => void onOpenPreviewToSide: () => void onOpenMarkdownPreview: () => void onOpenContainingFolder: () => void @@ -187,7 +187,7 @@ export function EditorPanelHeader({