From 820d6a6e96e036a582f53c30ff198b2720afc87f Mon Sep 17 00:00:00 2001 From: fullex <0xfullex@gmail.com> Date: Tue, 2 Sep 2025 15:37:30 +0800 Subject: [PATCH] refactor: update preference keys and enhance preference management - Updated preference keys from 'app.theme.*' to 'ui.*' for better organization and clarity. - Introduced new preferences for assistant tab sorting and visibility. - Refactored components to utilize the updated preference keys, improving consistency across the codebase. - Cleaned up unused code and comments related to previous settings for maintainability. - Updated auto-generated preference mappings to reflect the new structure. --- packages/shared/data/preferenceTypes.ts | 2 + packages/shared/data/preferences.ts | 61 +++++++++++-------- .../migrators/PreferencesMappings.ts | 32 +++++++--- src/main/services/ThemeService.ts | 6 +- src/renderer/src/context/AntdProvider.tsx | 2 +- src/renderer/src/context/ThemeProvider.tsx | 2 +- src/renderer/src/hooks/useAppInit.ts | 2 +- .../src/hooks/useNavBackgroundColor.ts | 2 +- src/renderer/src/hooks/useStore.ts | 40 +++++------- src/renderer/src/hooks/useUserTheme.ts | 2 +- src/renderer/src/pages/home/ChatNavbar.tsx | 7 ++- .../src/pages/home/Tabs/AssistantsTab.tsx | 5 +- .../home/Tabs/components/AssistantItem.tsx | 7 ++- .../DisplaySettings/DisplaySettings.tsx | 2 +- src/renderer/src/store/settings.ts | 14 ++--- src/renderer/src/types/index.ts | 2 +- .../src/windows/dataRefactorTest/TestApp.tsx | 2 +- .../components/PreferenceBasicTests.tsx | 8 +-- .../components/PreferenceHookTests.tsx | 22 +++---- .../components/PreferenceMultipleTests.tsx | 12 ++-- .../components/PreferenceServiceTests.tsx | 8 +-- .../src/windows/mini/home/HomeWindow.tsx | 2 +- .../windows/selection/action/entryPoint.tsx | 4 +- .../windows/selection/toolbar/entryPoint.tsx | 4 +- 24 files changed, 135 insertions(+), 115 deletions(-) diff --git a/packages/shared/data/preferenceTypes.ts b/packages/shared/data/preferenceTypes.ts index aac3cee166..37123c193a 100644 --- a/packages/shared/data/preferenceTypes.ts +++ b/packages/shared/data/preferenceTypes.ts @@ -40,3 +40,5 @@ export type LanguageVarious = 'zh-CN' | 'zh-TW' | 'el-GR' | 'en-US' | 'es-ES' | export type WindowStyle = 'transparent' | 'opaque' export type SendMessageShortcut = 'Enter' | 'Shift+Enter' | 'Ctrl+Enter' | 'Command+Enter' | 'Alt+Enter' + +export type AssistantTabSortType = 'tags' | 'list' diff --git a/packages/shared/data/preferences.ts b/packages/shared/data/preferences.ts index 68b3b130b7..a572a84795 100644 --- a/packages/shared/data/preferences.ts +++ b/packages/shared/data/preferences.ts @@ -1,6 +1,6 @@ /** * Auto-generated preferences configuration - * Generated at: 2025-09-02T04:48:55.916Z + * Generated at: 2025-09-02T06:55:00.341Z * * This file is automatically generated from classification.json * To update this file, modify classification.json and run: @@ -11,6 +11,7 @@ import { TRANSLATE_PROMPT } from '@shared/config/prompts' import type { + AssistantTabSortType, SelectionActionItem, SelectionFilterMode, SelectionTriggerMode, @@ -58,12 +59,6 @@ export interface PreferencesType { 'app.spell_check.enabled': boolean // redux/settings/spellCheckLanguages 'app.spell_check.languages': unknown[] - // redux/settings/theme - 'app.theme.mode': ThemeMode - // redux/settings/userTheme.colorPrimary - 'app.theme.user.color_primary': string - // redux/settings/windowStyle - 'app.theme.window_style': WindowStyle // redux/settings/tray 'app.tray.enabled': boolean // redux/settings/trayOnClose @@ -76,6 +71,14 @@ export interface PreferencesType { 'app.user.name': string // electronStore/ZoomFactor/ZoomFactor 'app.zoom_factor': number + // redux/settings/clickAssistantToShowTopic + 'assistant.click_to_show_topic': boolean + // redux/settings/assistantIconType + 'assistant.icon_type': string + // redux/settings/showAssistants + 'assistant.tab.show': boolean + // redux/settings/assistantsTabSortType + 'assistant.tab.sort_type': AssistantTabSortType // redux/settings/codeCollapsible 'chat.code.collapsible': boolean // redux/settings/codeEditor.autocompletion @@ -290,6 +293,8 @@ export interface PreferencesType { 'feature.minapp.open_link_external': boolean // redux/settings/showOpenedMinappsInSidebar 'feature.minapp.show_opened_in_sidebar': boolean + // redux/settings/showWorkspace + 'feature.notes.show_workspace': boolean // redux/settings/clickTrayToShowQuickAssistant 'feature.quick_assistant.click_tray_to_show': boolean // redux/settings/enableQuickAssistant @@ -358,20 +363,24 @@ export interface PreferencesType { 'topic.naming.enabled': boolean // redux/settings/topicNamingPrompt 'topic.naming.prompt': string - // redux/settings/pinTopicsToTop - 'topic.pin_to_top': boolean // redux/settings/topicPosition 'topic.position': string + // redux/settings/pinTopicsToTop + 'topic.tab.pin_to_top': boolean + // redux/settings/showTopics + 'topic.tab.show': boolean // redux/settings/showTopicTime - 'topic.show_time': boolean - // redux/settings/assistantIconType - 'ui.assistant_icon_type': string - // redux/settings/clickAssistantToShowTopic - 'ui.click_assistant_to_show_topic': boolean + 'topic.tab.show_time': boolean // redux/settings/customCss 'ui.custom_css': string // redux/settings/navbarPosition 'ui.navbar.position': 'left' | 'top' + // redux/settings/theme + 'ui.theme_mode': ThemeMode + // redux/settings/userTheme.colorPrimary + 'ui.theme_user.color_primary': string + // redux/settings/windowStyle + 'ui.window_style': WindowStyle } } @@ -394,15 +403,16 @@ export const DefaultPreferences: PreferencesType = { 'app.proxy.url': null, 'app.spell_check.enabled': false, 'app.spell_check.languages': [], - 'app.theme.mode': ThemeMode.system, - 'app.theme.user.color_primary': '#00b96b', - 'app.theme.window_style': 'opaque', 'app.tray.enabled': true, 'app.tray.on_close': true, 'app.tray.on_launch': false, 'app.user.id': 'uuid()', 'app.user.name': '', 'app.zoom_factor': 1, + 'assistant.click_to_show_topic': true, + 'assistant.icon_type': 'emoji', + 'assistant.tab.show': true, + 'assistant.tab.sort_type': 'list', 'chat.code.collapsible': false, 'chat.code.editor.autocompletion': true, 'chat.code.editor.enabled': false, @@ -510,6 +520,7 @@ export const DefaultPreferences: PreferencesType = { 'feature.minapp.max_keep_alive': 3, 'feature.minapp.open_link_external': false, 'feature.minapp.show_opened_in_sidebar': true, + 'feature.notes.show_workspace': true, 'feature.quick_assistant.click_tray_to_show': false, 'feature.quick_assistant.enabled': false, 'feature.quick_assistant.read_clipboard_at_startup': true, @@ -591,13 +602,15 @@ export const DefaultPreferences: PreferencesType = { 'shortcut.topic.new': { editable: true, enabled: true, key: ['CommandOrControl', 'N'], system: false }, 'topic.naming.enabled': true, 'topic.naming.prompt': '', - 'topic.pin_to_top': false, 'topic.position': 'left', - 'topic.show_time': false, - 'ui.assistant_icon_type': 'emoji', - 'ui.click_assistant_to_show_topic': true, + 'topic.tab.pin_to_top': false, + 'topic.tab.show': true, + 'topic.tab.show_time': false, 'ui.custom_css': '', - 'ui.navbar.position': 'top' + 'ui.navbar.position': 'top', + 'ui.theme_mode': ThemeMode.system, + 'ui.theme_user.color_primary': '#00b96b', + 'ui.window_style': 'opaque' } } @@ -605,8 +618,8 @@ export const DefaultPreferences: PreferencesType = { /** * 生成统计: - * - 总配置项: 173 + * - 总配置项: 177 * - electronStore项: 1 - * - redux项: 172 + * - redux项: 176 * - localStorage项: 0 */ diff --git a/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts b/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts index 778856d858..b3cfb07c6c 100644 --- a/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts +++ b/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts @@ -1,6 +1,6 @@ /** * Auto-generated preference mappings from classification.json - * Generated at: 2025-09-02T05:21:08.374Z + * Generated at: 2025-09-02T06:27:50.213Z * * This file contains pure mapping relationships without default values. * Default values are managed in packages/shared/data/preferences.ts @@ -72,7 +72,7 @@ export const REDUX_STORE_MAPPINGS = { }, { originalKey: 'theme', - targetKey: 'app.theme.mode' + targetKey: 'ui.theme_mode' }, { originalKey: 'tray', @@ -82,6 +82,18 @@ export const REDUX_STORE_MAPPINGS = { originalKey: 'trayOnClose', targetKey: 'app.tray.on_close' }, + { + originalKey: 'showAssistants', + targetKey: 'assistant.tab.show' + }, + { + originalKey: 'showTopics', + targetKey: 'topic.tab.show' + }, + { + originalKey: 'assistantsTabSortType', + targetKey: 'assistant.tab.sort_type' + }, { originalKey: 'sendMessageShortcut', targetKey: 'chat.input.send_message_shortcut' @@ -132,11 +144,11 @@ export const REDUX_STORE_MAPPINGS = { }, { originalKey: 'userTheme.colorPrimary', - targetKey: 'app.theme.user.color_primary' + targetKey: 'ui.theme_user.color_primary' }, { originalKey: 'windowStyle', - targetKey: 'app.theme.window_style' + targetKey: 'ui.window_style' }, { originalKey: 'fontSize', @@ -148,15 +160,15 @@ export const REDUX_STORE_MAPPINGS = { }, { originalKey: 'showTopicTime', - targetKey: 'topic.show_time' + targetKey: 'topic.tab.show_time' }, { originalKey: 'pinTopicsToTop', - targetKey: 'topic.pin_to_top' + targetKey: 'topic.tab.pin_to_top' }, { originalKey: 'assistantIconType', - targetKey: 'ui.assistant_icon_type' + targetKey: 'assistant.icon_type' }, { originalKey: 'pasteLongTextAsFile', @@ -168,7 +180,7 @@ export const REDUX_STORE_MAPPINGS = { }, { originalKey: 'clickAssistantToShowTopic', - targetKey: 'ui.click_assistant_to_show_topic' + targetKey: 'assistant.click_to_show_topic' }, { originalKey: 'codeExecution.enabled', @@ -732,9 +744,9 @@ export const REDUX_STORE_MAPPINGS = { /** * 映射统计: * - ElectronStore项: 1 - * - Redux Store项: 172 + * - Redux Store项: 175 * - Redux分类: settings, selectionStore, nutstore, shortcuts - * - 总配置项: 173 + * - 总配置项: 176 * * 使用说明: * 1. ElectronStore读取: configManager.get(mapping.originalKey) diff --git a/src/main/services/ThemeService.ts b/src/main/services/ThemeService.ts index 2ce090f0f6..a097846484 100644 --- a/src/main/services/ThemeService.ts +++ b/src/main/services/ThemeService.ts @@ -8,18 +8,18 @@ import { titleBarOverlayDark, titleBarOverlayLight } from '../config' class ThemeService { private theme: ThemeMode = ThemeMode.system constructor() { - this.theme = preferenceService.get('app.theme.mode') + this.theme = preferenceService.get('ui.theme_mode') if (this.theme === ThemeMode.dark || this.theme === ThemeMode.light || this.theme === ThemeMode.system) { nativeTheme.themeSource = this.theme } else { // 兼容旧版本 - preferenceService.set('app.theme.mode', ThemeMode.system) + preferenceService.set('ui.theme_mode', ThemeMode.system) nativeTheme.themeSource = ThemeMode.system } nativeTheme.on('updated', this.themeUpdatadHandler.bind(this)) - preferenceService.subscribeChange('app.theme.mode', (newTheme) => { + preferenceService.subscribeChange('ui.theme_mode', (newTheme) => { this.theme = newTheme nativeTheme.themeSource = newTheme }) diff --git a/src/renderer/src/context/AntdProvider.tsx b/src/renderer/src/context/AntdProvider.tsx index 025b287560..abd202c306 100644 --- a/src/renderer/src/context/AntdProvider.tsx +++ b/src/renderer/src/context/AntdProvider.tsx @@ -17,7 +17,7 @@ import { useTheme } from './ThemeProvider' const AntdProvider: FC = ({ children }) => { const [language] = usePreference('app.language') - const [colorPrimary] = usePreference('app.theme.user.color_primary') + const [colorPrimary] = usePreference('ui.theme_user.color_primary') const { theme: _theme } = useTheme() return ( diff --git a/src/renderer/src/context/ThemeProvider.tsx b/src/renderer/src/context/ThemeProvider.tsx index 6e5aca07e8..381c862e1b 100644 --- a/src/renderer/src/context/ThemeProvider.tsx +++ b/src/renderer/src/context/ThemeProvider.tsx @@ -27,7 +27,7 @@ export const ThemeProvider: React.FC = ({ children }) => { // 用户设置的主题 // const { theme: settedTheme, setTheme: setSettedTheme } = useSettings() - const [settedTheme, setSettedTheme] = usePreference('app.theme.mode') + const [settedTheme, setSettedTheme] = usePreference('ui.theme_mode') const [actualTheme, setActualTheme] = useState( window.matchMedia('(prefers-color-scheme: dark)').matches ? ThemeMode.dark : ThemeMode.light diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts index 5150fdc43b..cf73d69f51 100644 --- a/src/renderer/src/hooks/useAppInit.ts +++ b/src/renderer/src/hooks/useAppInit.ts @@ -38,7 +38,7 @@ export function useAppInit() { enableDataCollection } = useSettings() const [language] = usePreference('app.language') - const [windowStyle] = usePreference('app.theme.window_style') + const [windowStyle] = usePreference('ui.window_style') const [customCss] = usePreference('ui.custom_css') const { minappShow } = useRuntime() diff --git a/src/renderer/src/hooks/useNavBackgroundColor.ts b/src/renderer/src/hooks/useNavBackgroundColor.ts index 2ab30a8b69..436492a174 100644 --- a/src/renderer/src/hooks/useNavBackgroundColor.ts +++ b/src/renderer/src/hooks/useNavBackgroundColor.ts @@ -2,7 +2,7 @@ import { usePreference } from '@data/hooks/usePreference' import { isMac } from '@renderer/config/constant' function useNavBackgroundColor() { - const [windowStyle] = usePreference('app.theme.window_style') + const [windowStyle] = usePreference('ui.window_style') const macTransparentWindow = isMac && windowStyle === 'transparent' diff --git a/src/renderer/src/hooks/useStore.ts b/src/renderer/src/hooks/useStore.ts index 3115813ed4..036a53fa01 100644 --- a/src/renderer/src/hooks/useStore.ts +++ b/src/renderer/src/hooks/useStore.ts @@ -1,54 +1,42 @@ -import { useAppDispatch, useAppSelector } from '@renderer/store' -import { - setAssistantsTabSortType, - setShowAssistants, - setShowTopics, - setShowWorkspace, - toggleShowAssistants, - toggleShowTopics, - toggleShowWorkspace -} from '@renderer/store/settings' -import { AssistantsSortType } from '@renderer/types' +//FIXME 这个文件有必要存在吗? fullex@data refactor + +import { usePreference } from '@data/hooks/usePreference' export function useShowAssistants() { - const showAssistants = useAppSelector((state) => state.settings.showAssistants) - const dispatch = useAppDispatch() + const [showAssistants, setShowAssistants] = usePreference('assistant.tab.show') return { showAssistants, - setShowAssistants: (show: boolean) => dispatch(setShowAssistants(show)), - toggleShowAssistants: () => dispatch(toggleShowAssistants()) + setShowAssistants, + toggleShowAssistants: () => setShowAssistants(!showAssistants) } } export function useShowTopics() { - const showTopics = useAppSelector((state) => state.settings.showTopics) - const dispatch = useAppDispatch() + const [showTopics, setShowTopics] = usePreference('topic.tab.show') return { showTopics, - setShowTopics: (show: boolean) => dispatch(setShowTopics(show)), - toggleShowTopics: () => dispatch(toggleShowTopics()) + setShowTopics, + toggleShowTopics: () => setShowTopics(!showTopics) } } export function useAssistantsTabSortType() { - const assistantsTabSortType = useAppSelector((state) => state.settings.assistantsTabSortType) - const dispatch = useAppDispatch() + const [assistantsTabSortType, setAssistantsTabSortType] = usePreference('assistant.tab.sort_type') return { assistantsTabSortType, - setAssistantsTabSortType: (sortType: AssistantsSortType) => dispatch(setAssistantsTabSortType(sortType)) + setAssistantsTabSortType } } export function useShowWorkspace() { - const showWorkspace = useAppSelector((state) => state.settings.showWorkspace) - const dispatch = useAppDispatch() + const [showWorkspace, setShowWorkspace] = usePreference('feature.notes.show_workspace') return { showWorkspace, - setShowWorkspace: (show: boolean) => dispatch(setShowWorkspace(show)), - toggleShowWorkspace: () => dispatch(toggleShowWorkspace()) + setShowWorkspace, + toggleShowWorkspace: () => setShowWorkspace(!showWorkspace) } } diff --git a/src/renderer/src/hooks/useUserTheme.ts b/src/renderer/src/hooks/useUserTheme.ts index 57e4505e0a..d0246e19a3 100644 --- a/src/renderer/src/hooks/useUserTheme.ts +++ b/src/renderer/src/hooks/useUserTheme.ts @@ -5,7 +5,7 @@ import { usePreference } from '@data/hooks/usePreference' import Color from 'color' export default function useUserTheme() { - const [colorPrimary, setColorPrimary] = usePreference('app.theme.user.color_primary') + const [colorPrimary, setColorPrimary] = usePreference('ui.theme_user.color_primary') const initUserTheme = (theme: { colorPrimary: string } = { colorPrimary }) => { const colorPrimary = Color(theme.colorPrimary) diff --git a/src/renderer/src/pages/home/ChatNavbar.tsx b/src/renderer/src/pages/home/ChatNavbar.tsx index 4b4f94909f..8dbd05285e 100644 --- a/src/renderer/src/pages/home/ChatNavbar.tsx +++ b/src/renderer/src/pages/home/ChatNavbar.tsx @@ -1,9 +1,9 @@ +import { usePreference } from '@data/hooks/usePreference' import { NavbarHeader } from '@renderer/components/app/Navbar' import { HStack } from '@renderer/components/Layout' import SearchPopup from '@renderer/components/Popups/SearchPopup' import { useAssistant } from '@renderer/hooks/useAssistant' import { modelGenerating } from '@renderer/hooks/useRuntime' -import { useSettings } from '@renderer/hooks/useSettings' import { useShortcut } from '@renderer/hooks/useShortcuts' import { useShowAssistants, useShowTopics } from '@renderer/hooks/useStore' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' @@ -32,7 +32,10 @@ interface Props { const HeaderNavbar: FC = ({ activeAssistant, setActiveAssistant, activeTopic, setActiveTopic }) => { const { assistant } = useAssistant(activeAssistant.id) const { showAssistants, toggleShowAssistants } = useShowAssistants() - const { topicPosition, narrowMode } = useSettings() + + const [topicPosition] = usePreference('topic.position') + const [narrowMode] = usePreference('chat.narrow_mode') + const { showTopics, toggleShowTopics } = useShowTopics() const dispatch = useAppDispatch() diff --git a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx index 5147cbb2c2..1621128a9b 100644 --- a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx @@ -5,7 +5,8 @@ import { useAgents } from '@renderer/hooks/useAgents' import { useAssistants } from '@renderer/hooks/useAssistant' import { useAssistantsTabSortType } from '@renderer/hooks/useStore' import { useTags } from '@renderer/hooks/useTags' -import { Assistant, AssistantsSortType } from '@renderer/types' +import { Assistant } from '@renderer/types' +import type { AssistantTabSortType } from '@shared/data/preferenceTypes' import { Tooltip, Typography } from 'antd' import { Plus } from 'lucide-react' import { FC, useCallback, useMemo, useRef, useState } from 'react' @@ -47,7 +48,7 @@ const Assistants: FC = ({ ) const handleSortByChange = useCallback( - (sortType: AssistantsSortType) => { + (sortType: AssistantTabSortType) => { setAssistantsTabSortType(sortType) }, [setAssistantsTabSortType] diff --git a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx index 1d8e12626a..a0af42cf91 100644 --- a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx @@ -8,9 +8,10 @@ import { useTags } from '@renderer/hooks/useTags' import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' import { getDefaultModel } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant, AssistantsSortType } from '@renderer/types' +import { Assistant } from '@renderer/types' import { getLeadingEmoji, uuid } from '@renderer/utils' import { hasTopicPendingRequests } from '@renderer/utils/queue' +import type { AssistantTabSortType } from '@shared/data/preferenceTypes' import { Dropdown, MenuProps } from 'antd' import { omit } from 'lodash' import { @@ -36,14 +37,14 @@ import AssistantTagsPopup from './AssistantTagsPopup' interface AssistantItemProps { assistant: Assistant isActive: boolean - sortBy: AssistantsSortType + sortBy: AssistantTabSortType onSwitch: (assistant: Assistant) => void onDelete: (assistant: Assistant) => void onCreateDefaultAssistant: () => void addAgent: (agent: any) => void copyAssistant: (assistant: Assistant) => void onTagClick?: (tag: string) => void - handleSortByChange?: (sortType: AssistantsSortType) => void + handleSortByChange?: (sortType: AssistantTabSortType) => void } const AssistantItem: FC = ({ diff --git a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx index f9043a7bf3..4c76deed0f 100644 --- a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx +++ b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx @@ -68,7 +68,7 @@ const DisplaySettings: FC = () => { sidebarIcons, assistantIconType } = useSettings() - const [windowStyle, setWindowStyle] = usePreference('app.theme.window_style') + const [windowStyle, setWindowStyle] = usePreference('ui.window_style') const [customCss, setCustomCss] = usePreference('ui.custom_css') const { navbarPosition, setNavbarPosition } = useNavbarPosition() diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts index d386577eba..17fbc6c4c2 100644 --- a/src/renderer/src/store/settings.ts +++ b/src/renderer/src/store/settings.ts @@ -3,7 +3,6 @@ import { isMac } from '@renderer/config/constant' import { DEFAULT_SIDEBAR_ICONS } from '@renderer/config/sidebar' import { ApiServerConfig, - AssistantsSortType, CodeStyleVarious, MathEngine, OpenAIServiceTier, @@ -17,6 +16,7 @@ import { uuid } from '@renderer/utils' import { UpgradeChannel } from '@shared/config/constant' import { TRANSLATE_PROMPT } from '@shared/config/prompts' import type { SendMessageShortcut } from '@shared/data/preferenceTypes' +import type { AssistantTabSortType } from '@shared/data/preferenceTypes' import { LanguageVarious, ThemeMode } from '@shared/data/preferenceTypes' import { OpenAIVerbosity } from '@types' @@ -38,7 +38,7 @@ export type UserTheme = { export interface SettingsState { showAssistants: boolean showTopics: boolean - assistantsTabSortType: AssistantsSortType + assistantsTabSortType: AssistantTabSortType sendMessageShortcut: SendMessageShortcut language: LanguageVarious targetLanguage: TranslateLanguageCode @@ -432,7 +432,7 @@ const settingsSlice = createSlice({ toggleShowTopics: (state) => { state.showTopics = !state.showTopics }, - setAssistantsTabSortType: (state, action: PayloadAction) => { + setAssistantsTabSortType: (state, action: PayloadAction) => { state.assistantsTabSortType = action.payload }, setSendMessageShortcut: (state, action: PayloadAction) => { @@ -861,10 +861,10 @@ const settingsSlice = createSlice({ export const { setShowModelNameInMarkdown, setShowModelProviderInMarkdown, - setShowAssistants, - toggleShowAssistants, - setShowTopics, - toggleShowTopics, + // setShowAssistants, + // toggleShowAssistants, + // setShowTopics, + // toggleShowTopics, setAssistantsTabSortType, setSendMessageShortcut, setLanguage, diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 012d21a7c4..bf447d5eee 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -53,7 +53,7 @@ export const isTranslateAssistant = (assistant: Assistant): assistant is Transla return (assistant.model && assistant.targetLanguage && typeof assistant.content === 'string') !== undefined } -export type AssistantsSortType = 'tags' | 'list' +// export type AssistantsSortType = 'tags' | 'list' export type AssistantMessage = { role: 'user' | 'assistant' diff --git a/src/renderer/src/windows/dataRefactorTest/TestApp.tsx b/src/renderer/src/windows/dataRefactorTest/TestApp.tsx index 9fbecf351d..ee6db367a9 100644 --- a/src/renderer/src/windows/dataRefactorTest/TestApp.tsx +++ b/src/renderer/src/windows/dataRefactorTest/TestApp.tsx @@ -49,7 +49,7 @@ const TestApp: React.FC = () => { const windowNumber = getWindowNumber() // Add theme preference monitoring for UI changes - const [theme, setTheme] = usePreference('app.theme.mode') + const [theme, setTheme] = usePreference('ui.theme_mode') const [language] = usePreference('app.language') const [zoomFactor] = usePreference('app.zoom_factor') diff --git a/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx b/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx index e87ce4bdf7..62813eb402 100644 --- a/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx +++ b/src/renderer/src/windows/dataRefactorTest/components/PreferenceBasicTests.tsx @@ -12,7 +12,7 @@ const { Option } = Select * Tests single preference management with React hooks */ const PreferenceBasicTests: React.FC = () => { - const [selectedKey, setSelectedKey] = useState('app.theme.mode') + const [selectedKey, setSelectedKey] = useState('ui.theme_mode') // Use the hook with the selected key const [value, setValue] = usePreference(selectedKey) @@ -20,7 +20,7 @@ const PreferenceBasicTests: React.FC = () => { const [inputValue, setInputValue] = useState('') // Add theme monitoring for visual changes - const [currentTheme] = usePreference('app.theme.mode') + const [currentTheme] = usePreference('ui.theme_mode') const isDarkTheme = currentTheme === ThemeMode.dark const handleSetValue = async () => { @@ -51,7 +51,7 @@ const PreferenceBasicTests: React.FC = () => { } const testCases = [ - { key: 'app.theme.mode', label: 'App Theme Mode', sampleValue: 'ThemeMode.dark', type: 'enum' }, + { key: 'ui.theme_mode', label: 'App Theme Mode', sampleValue: 'ThemeMode.dark', type: 'enum' }, { key: 'app.language', label: 'App Language', sampleValue: 'zh-CN', type: 'enum' }, { key: 'app.spell_check.enabled', label: 'Spell Check', sampleValue: 'true', type: 'boolean' }, { key: 'app.zoom_factor', label: 'Zoom Factor', sampleValue: '1.2', type: 'number', min: 0.5, max: 2.0, step: 0.1 }, @@ -132,7 +132,7 @@ const PreferenceBasicTests: React.FC = () => { 快速操作: {/* Theme Toggle with Visual Feedback */} - {selectedKey === 'app.theme.mode' && ( + {selectedKey === 'ui.theme_mode' && (