From 4512f65b2f7131adee927e136f83687d26cc23e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=AA=E7=94=B1=E7=9A=84=E4=B8=96=E7=95=8C=E4=BA=BA?= <3196812536@qq.com> Date: Thu, 31 Jul 2025 19:15:24 +0800 Subject: [PATCH] fix: merge main branch error --- src/renderer/src/App.tsx | 1 + src/renderer/src/Router.tsx | 2 ++ src/renderer/src/i18n/locales/zh-cn.json | 29 +++++++++++++++++++++- src/renderer/src/pages/notes/NotesPage.tsx | 25 +++++++++++-------- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/migrate.ts | 2 +- 6 files changed, 47 insertions(+), 14 deletions(-) diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index ad18a9b193..f216afb2c0 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -2,6 +2,7 @@ import '@renderer/databases' import { loggerService } from '@logger' import store, { persistor } from '@renderer/store' +import React from 'react' import { Provider } from 'react-redux' import { PersistGate } from 'redux-persist/integration/react' diff --git a/src/renderer/src/Router.tsx b/src/renderer/src/Router.tsx index 624c6ccc47..8ea788a56e 100644 --- a/src/renderer/src/Router.tsx +++ b/src/renderer/src/Router.tsx @@ -13,6 +13,7 @@ import HomePage from './pages/home/HomePage' import KnowledgePage from './pages/knowledge/KnowledgePage' import LaunchpadPage from './pages/launchpad/LaunchpadPage' import MinAppsPage from './pages/minapps/MinAppsPage' +import NotesPage from './pages/notes/NotesPage' import PaintingsRoutePage from './pages/paintings/PaintingsRoutePage' import SettingsPage from './pages/settings/SettingsPage' import TranslatePage from './pages/translate/TranslatePage' @@ -28,6 +29,7 @@ const Router: FC = () => { } /> } /> } /> + } /> } /> } /> } /> diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 4b49f9903f..e70935ba2f 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -553,6 +553,7 @@ "label": "导出为 Markdown", "reason": "导出为 Markdown (包含思考)" }, + "notes": "导出到笔记", "notion": "导出到 Notion", "obsidian": "导出到 Obsidian", "obsidian_atributes": "配置笔记属性", @@ -1192,6 +1193,9 @@ "specified": "导出 Markdown 文件失败" } }, + "notes": { + "export": "导出笔记失败" + }, "notion": { "export": "导出 Notion 错误,请检查连接状态并对照文档检查配置", "no_api_key": "未配置 Notion API Key 或 Notion Database ID" @@ -1284,6 +1288,9 @@ "specified": "成功导出 Markdown 文件" } }, + "notes": { + "export": "成功导出到笔记" + }, "notion": { "export": "成功导出到 Notion" }, @@ -1463,6 +1470,25 @@ "hide_sidebar": "隐藏侧边栏", "show_sidebar": "显示侧边栏" }, + "notes": { + "title": "笔记", + "empty": "暂无笔记", + "new_folder": "新建文件夹", + "new_note": "新建笔记", + "untitled_note": "无标题笔记", + "untitled_folder": "新文件夹", + "rename": "重命名", + "delete": "删除", + "star": "收藏", + "unstar": "取消收藏", + "expand": "展开", + "collapse": "收起", + "delete_confirm": "确定要删除这个{{type}}吗?", + "delete_folder_confirm": "确定要删除文件夹 \"{{name}}\" 及其所有内容吗?", + "delete_note_confirm": "确定要删除笔记 \"{{name}}\" 吗?", + "folder": "文件夹", + "content_placeholder": "请输入笔记内容..." + }, "notification": { "assistant": "助手响应", "knowledge": { @@ -2030,6 +2056,7 @@ "joplin": "导出到 Joplin", "markdown": "导出为 Markdown", "markdown_reason": "导出为 Markdown(包含思考)", + "notes": "导出到笔记", "notion": "导出到 Notion", "obsidian": "导出到 Obsidian", "plain_text": "复制为纯文本", @@ -3539,4 +3566,4 @@ "show_window": "显示窗口", "visualization": "可视化" } -} \ No newline at end of file +} diff --git a/src/renderer/src/pages/notes/NotesPage.tsx b/src/renderer/src/pages/notes/NotesPage.tsx index 7b95d07e2e..9afd594559 100644 --- a/src/renderer/src/pages/notes/NotesPage.tsx +++ b/src/renderer/src/pages/notes/NotesPage.tsx @@ -1,5 +1,6 @@ import 'vditor/dist/index.css' +import { loggerService } from '@logger' import Scrollbar from '@renderer/components/Scrollbar' import { useTheme } from '@renderer/context/ThemeProvider' import { useSettings } from '@renderer/hooks/useSettings' @@ -16,6 +17,8 @@ import Vditor from 'vditor' import NotesSidebar from './NotesSidebar' import { NotesService } from './utils/NotesService' +const logger = loggerService.withContext('NotesPage') + const NotesPage: FC = () => { const editorRef = useRef(null) const [vditor, setVditor] = useState(null) @@ -51,7 +54,7 @@ const NotesPage: FC = () => { await NotesService.updateNote(activeNode, content) } } catch (error) { - console.error('Failed to save note:', error) + logger.error('Failed to save note:', error as Error) } }, [activeNodeId, findNodeById, notesTree] @@ -63,7 +66,7 @@ const NotesPage: FC = () => { const tree = await NotesService.getNotesTree() setNotesTree(tree) } catch (error) { - console.error('Failed to load notes tree:', error) + logger.error('Failed to load notes tree:', error as Error) } } @@ -120,7 +123,7 @@ const NotesPage: FC = () => { editor.setValue(content) } } catch (error) { - console.error('Failed to load note content after editor init:', error) + logger.error('Failed to load note content after editor init:', error as Error) } } }, @@ -163,7 +166,7 @@ const NotesPage: FC = () => { const updatedTree = await NotesService.getNotesTree() setNotesTree(updatedTree) } catch (error) { - console.error('Failed to create folder:', error) + logger.error('Failed to create folder:', error as Error) } finally { setIsLoading(false) } @@ -186,7 +189,7 @@ const NotesPage: FC = () => { // 自动选择新创建的笔记 setActiveNodeId(newNote.id) } catch (error) { - console.error('Failed to create note:', error) + logger.error('Failed to create note:', error as Error) } finally { setIsLoading(false) } @@ -217,7 +220,7 @@ const NotesPage: FC = () => { vditor.setValue(content) } } catch (error) { - console.error('Failed to load note:', error) + logger.error('Failed to load note:', error as Error) } finally { setIsLoading(false) } @@ -244,7 +247,7 @@ const NotesPage: FC = () => { } } } catch (error) { - console.error('Failed to delete node:', error) + logger.error('Failed to delete node:', error as Error) } finally { setIsLoading(false) } @@ -258,7 +261,7 @@ const NotesPage: FC = () => { const updatedTree = await NotesService.getNotesTree() setNotesTree(updatedTree) } catch (error) { - console.error('Failed to rename node:', error) + logger.error('Failed to rename node:', error as Error) } finally { setIsLoading(false) } @@ -271,7 +274,7 @@ const NotesPage: FC = () => { const updatedTree = await NotesService.getNotesTree() setNotesTree(updatedTree) } catch (error) { - console.error('Failed to toggle starred:', error) + logger.error('Failed to toggle starred:', error as Error) } } @@ -282,7 +285,7 @@ const NotesPage: FC = () => { const updatedTree = await NotesService.getNotesTree() setNotesTree(updatedTree) } catch (error) { - console.error('Failed to toggle expanded:', error) + logger.error('Failed to toggle expanded:', error as Error) } } @@ -294,7 +297,7 @@ const NotesPage: FC = () => { const updatedTree = await NotesService.getNotesTree() setNotesTree(updatedTree) } catch (error) { - console.error('Failed to move node:', error) + logger.error('Failed to move node:', error as Error) } finally { setIsLoading(false) } diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 74fdc28fd5..f818559c38 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -60,7 +60,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 125, + version: 126, blacklist: ['runtime', 'messages', 'messageBlocks', 'tabs'], migrate }, diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 9632cfd82b..8da5c81e20 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1937,7 +1937,7 @@ const migrateConfig = { return state } }, - '122': (state: RootState) => { + '126': (state: RootState) => { if (state.settings && state.settings.sidebarIcons) { // Check if 'notes' is not already in visible icons if (!state.settings.sidebarIcons.visible.includes('notes' as any)) {