mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-25 11:20:07 +08:00
59 lines
1.6 KiB
TypeScript
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]
|
|
}
|