cherry-studio/src/renderer/src/hooks/useSettings.ts
2025-01-13 13:04:01 +08:00

59 lines
1.6 KiB
TypeScript

import store, { useAppDispatch, useAppSelector } from '@renderer/store'
import {
SendMessageShortcut,
setSendMessageShortcut as _setSendMessageShortcut,
setSidebarIcons,
setTheme,
SettingsState,
setTopicPosition,
setTray,
setWindowStyle
} from '@renderer/store/settings'
import { SidebarIcon, ThemeMode } from '@renderer/types'
export function useSettings() {
const settings = useAppSelector((state) => state.settings)
const dispatch = useAppDispatch()
return {
...settings,
setSendMessageShortcut(shortcut: SendMessageShortcut) {
dispatch(_setSendMessageShortcut(shortcut))
},
setTray(isActive: boolean) {
dispatch(setTray(isActive))
},
setTheme(theme: ThemeMode) {
dispatch(setTheme(theme))
},
setWindowStyle(windowStyle: 'transparent' | 'opaque') {
dispatch(setWindowStyle(windowStyle))
},
setTopicPosition(topicPosition: 'left' | 'right') {
dispatch(setTopicPosition(topicPosition))
},
updateSidebarIcons(icons: { visible: SidebarIcon[]; disabled: SidebarIcon[] }) {
dispatch(setSidebarIcons(icons))
},
updateSidebarVisibleIcons(icons: SidebarIcon[]) {
dispatch(setSidebarIcons({ visible: icons }))
},
updateSidebarDisabledIcons(icons: SidebarIcon[]) {
dispatch(setSidebarIcons({ disabled: icons }))
}
}
}
export function useMessageStyle() {
const { messageStyle } = useSettings()
const isBubbleStyle = messageStyle === 'bubble'
return {
isBubbleStyle
}
}
export const getStoreSetting = (key: keyof SettingsState) => {
return store.getState().settings[key]
}