From bb2b885c2dfd56cdb23ecebdb874c8123d669599 Mon Sep 17 00:00:00 2001 From: Wang Jiyuan <59059173+EurFelux@users.noreply.github.com> Date: Sun, 8 Jun 2025 00:02:15 +0800 Subject: [PATCH] refactor: better semantic of obsidian export options (#6926) --- .../src/components/ObsidianExportDialog.tsx | 30 +++++++++++++------ .../components/Popups/ObsidianExportPopup.tsx | 4 +-- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/renderer/src/components/ObsidianExportDialog.tsx b/src/renderer/src/components/ObsidianExportDialog.tsx index 631c085cad..dfc4cc09e0 100644 --- a/src/renderer/src/components/ObsidianExportDialog.tsx +++ b/src/renderer/src/components/ObsidianExportDialog.tsx @@ -20,10 +20,16 @@ interface FileInfo { name: string } +const ObsidianProcessingMethod = { + APPEND: '1', + PREPEND: '2', + NEW_OR_OVERWRITE: '3' +} as const + interface PopupContainerProps { title: string obsidianTags: string | null - processingMethod: string | '3' + processingMethod: (typeof ObsidianProcessingMethod)[keyof typeof ObsidianProcessingMethod] open: boolean resolve: (success: boolean) => void message?: Message @@ -230,10 +236,10 @@ const PopupContainer: React.FC = ({ markdown = '' } let content = '' - if (state.processingMethod !== '3') { + if (state.processingMethod !== ObsidianProcessingMethod.NEW_OR_OVERWRITE) { content = `\n---\n${markdown}` } else { - content = `---\n\ntitle: ${state.title}\ncreated: ${state.createdAt}\nsource: ${state.source}\ntags: ${state.tags}\n---\n${markdown}` + content = `---\ntitle: ${state.title}\ncreated: ${state.createdAt}\nsource: ${state.source}\ntags: ${state.tags}\n---\n${markdown}` } if (content === '') { window.message.error(i18n.t('chat.topics.export.obsidian_export_failed')) @@ -280,9 +286,9 @@ const PopupContainer: React.FC = ({ const titleWithoutExt = fileName.endsWith('.md') ? fileName.substring(0, fileName.length - 3) : fileName handleChange('title', titleWithoutExt) setHasTitleBeenManuallyEdited(false) - handleChange('processingMethod', '1') + handleChange('processingMethod', ObsidianProcessingMethod.APPEND) } else { - handleChange('processingMethod', '3') + handleChange('processingMethod', ObsidianProcessingMethod.NEW_OR_OVERWRITE) if (!hasTitleBeenManuallyEdited) { handleChange('title', title) } @@ -390,9 +396,15 @@ const PopupContainer: React.FC = ({ onChange={(value) => handleChange('processingMethod', value)} placeholder={i18n.t('chat.topics.export.obsidian_operate_placeholder')} allowClear> - - - + + + @@ -403,4 +415,4 @@ const PopupContainer: React.FC = ({ ) } -export { PopupContainer } +export { ObsidianProcessingMethod, PopupContainer } diff --git a/src/renderer/src/components/Popups/ObsidianExportPopup.tsx b/src/renderer/src/components/Popups/ObsidianExportPopup.tsx index 49dc320c7c..aec5fcbaa8 100644 --- a/src/renderer/src/components/Popups/ObsidianExportPopup.tsx +++ b/src/renderer/src/components/Popups/ObsidianExportPopup.tsx @@ -1,11 +1,11 @@ -import { PopupContainer } from '@renderer/components/ObsidianExportDialog' +import { ObsidianProcessingMethod, PopupContainer } from '@renderer/components/ObsidianExportDialog' import { TopView } from '@renderer/components/TopView' import type { Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' interface ObsidianExportOptions { title: string - processingMethod: string | '3' + processingMethod: (typeof ObsidianProcessingMethod)[keyof typeof ObsidianProcessingMethod] topic?: Topic message?: Message messages?: Message[]