feat: add shortcuts to open settings page (#1964)

* feat: add shortcuts to open settings page
* refactor: simplify code
* fix: change to useHotKeys
This commit is contained in:
Chen Tao 2025-02-20 12:10:16 +08:00 committed by GitHub
parent f1a9699be4
commit b405d2e9ac
8 changed files with 41 additions and 9 deletions

View File

@ -10,6 +10,7 @@ import TopViewContainer from './components/TopView'
import AntdProvider from './context/AntdProvider' import AntdProvider from './context/AntdProvider'
import { SyntaxHighlighterProvider } from './context/SyntaxHighlighterProvider' import { SyntaxHighlighterProvider } from './context/SyntaxHighlighterProvider'
import { ThemeProvider } from './context/ThemeProvider' import { ThemeProvider } from './context/ThemeProvider'
import NavigationHandler from './handler/NavigationHandler'
import AgentsPage from './pages/agents/AgentsPage' import AgentsPage from './pages/agents/AgentsPage'
import AppsPage from './pages/apps/AppsPage' import AppsPage from './pages/apps/AppsPage'
import FilesPage from './pages/files/FilesPage' import FilesPage from './pages/files/FilesPage'
@ -28,6 +29,8 @@ function App(): JSX.Element {
<PersistGate loading={null} persistor={persistor}> <PersistGate loading={null} persistor={persistor}>
<TopViewContainer> <TopViewContainer>
<HashRouter> <HashRouter>
<NavigationHandler />
{/* 添加导航处理组件 */}
<Sidebar /> <Sidebar />
<Routes> <Routes>
<Route path="/" element={<HomePage />} /> <Route path="/" element={<HomePage />} />

View File

@ -0,0 +1,17 @@
import { useHotkeys } from 'react-hotkeys-hook'
import { useNavigate } from 'react-router-dom'
const NavigationHandler: React.FC = () => {
const navigate = useNavigate()
useHotkeys(
'meta+, ! ctrl+,',
function () {
navigate('/settings/provider')
},
{ splitKey: '!' }
)
return null
}
export default NavigationHandler

View File

@ -757,7 +757,8 @@
"toggle_show_topics": "Toggle Topics", "toggle_show_topics": "Toggle Topics",
"zoom_in": "Zoom In", "zoom_in": "Zoom In",
"zoom_out": "Zoom Out", "zoom_out": "Zoom Out",
"zoom_reset": "Reset Zoom" "zoom_reset": "Reset Zoom",
"show_settings": "Open Settings"
}, },
"theme.auto": "Auto", "theme.auto": "Auto",
"theme.dark": "Dark", "theme.dark": "Dark",
@ -810,4 +811,4 @@
"title": "Docs" "title": "Docs"
} }
} }
} }

View File

@ -768,7 +768,8 @@
"toggle_show_topics": "トピックの表示を切り替え", "toggle_show_topics": "トピックの表示を切り替え",
"zoom_in": "ズームイン", "zoom_in": "ズームイン",
"zoom_out": "ズームアウト", "zoom_out": "ズームアウト",
"zoom_reset": "ズームをリセット" "zoom_reset": "ズームをリセット",
"show_settings": "設定を開く"
}, },
"theme.auto": "自動", "theme.auto": "自動",
"theme.dark": "ダークテーマ", "theme.dark": "ダークテーマ",
@ -814,4 +815,4 @@
"title": "ドキュメント" "title": "ドキュメント"
} }
} }
} }

View File

@ -746,7 +746,8 @@
"toggle_show_topics": "Переключить отображение топиков", "toggle_show_topics": "Переключить отображение топиков",
"zoom_in": "Увеличить", "zoom_in": "Увеличить",
"zoom_out": "Уменьшить", "zoom_out": "Уменьшить",
"zoom_reset": "Сбросить масштаб" "zoom_reset": "Сбросить масштаб",
"show_settings": "Открыть настройки"
}, },
"theme.auto": "Автоматически", "theme.auto": "Автоматически",
"theme.dark": "Темная", "theme.dark": "Темная",
@ -793,4 +794,4 @@
"title": "Документация" "title": "Документация"
} }
} }
} }

View File

@ -755,6 +755,7 @@
"reset_to_default": "重置为默认", "reset_to_default": "重置为默认",
"search_message": "搜索消息", "search_message": "搜索消息",
"show_app": "显示应用", "show_app": "显示应用",
"show_settings": "打开设置",
"title": "快捷方式", "title": "快捷方式",
"toggle_new_context": "清除上下文", "toggle_new_context": "清除上下文",
"toggle_show_assistants": "切换助手显示", "toggle_show_assistants": "切换助手显示",
@ -814,4 +815,4 @@
"title": "帮助文档" "title": "帮助文档"
} }
} }
} }

View File

@ -748,7 +748,8 @@
"toggle_show_topics": "切換話題顯示", "toggle_show_topics": "切換話題顯示",
"zoom_in": "放大界面", "zoom_in": "放大界面",
"zoom_out": "縮小界面", "zoom_out": "縮小界面",
"zoom_reset": "重置縮放" "zoom_reset": "重置縮放",
"show_settings": "打開設定"
}, },
"theme.auto": "自動", "theme.auto": "自動",
"theme.dark": "深色主題", "theme.dark": "深色主題",
@ -795,4 +796,4 @@
"title": "幫助文件" "title": "幫助文件"
} }
} }
} }

View File

@ -10,6 +10,13 @@ export interface ShortcutsState {
const initialState: ShortcutsState = { const initialState: ShortcutsState = {
shortcuts: [ shortcuts: [
...ZOOM_SHORTCUTS, ...ZOOM_SHORTCUTS,
{
key: 'show_settings',
shortcut: [isMac ? 'Command' : 'Ctrl', ','],
editable: false,
enabled: true,
system: true
},
{ {
key: 'show_app', key: 'show_app',
shortcut: [], shortcut: [],