mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-02 18:39:06 +08:00
为应用程序添加了 WebDAV 配置项,包括主机、用户、密码和路径。这样用户就可以将备份文件定时上传到 WebDAV 服务器,并从 WebDAV 服务器恢复备份文件。 - 添加了新的依赖项 "webdav": "^5.7.1" - 修改了 package.json 文件 - 修改了 zh-tw.json、zh-cn.json 和 en-us.json 文件 - 修改了 settings.ts 文件 - 修改了 GeneralSettings.tsx 文件 https://github.com/kangfenmao/cherry-studio/issues/129
155 lines
4.5 KiB
TypeScript
155 lines
4.5 KiB
TypeScript
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
|
import { ThemeMode } from '@renderer/types'
|
|
|
|
export type SendMessageShortcut = 'Enter' | 'Shift+Enter'
|
|
|
|
export interface SettingsState {
|
|
showAssistants: boolean
|
|
showTopics: boolean
|
|
sendMessageShortcut: SendMessageShortcut
|
|
language: string
|
|
proxyUrl?: string
|
|
userName: string
|
|
showMessageDivider: boolean
|
|
messageFont: 'system' | 'serif'
|
|
showInputEstimatedTokens: boolean
|
|
theme: ThemeMode
|
|
windowStyle: 'transparent' | 'opaque'
|
|
fontSize: number
|
|
topicPosition: 'left' | 'right'
|
|
pasteLongTextAsFile: boolean
|
|
clickAssistantToShowTopic: boolean
|
|
manualUpdateCheck: boolean
|
|
|
|
// webdav 配置 host, user, pass, path
|
|
webdavHost: string
|
|
webdavUser: string
|
|
webdavPass: string
|
|
webdavPath: string
|
|
}
|
|
|
|
const initialState: SettingsState = {
|
|
showAssistants: true,
|
|
showTopics: true,
|
|
sendMessageShortcut: 'Enter',
|
|
language: navigator.language,
|
|
proxyUrl: undefined,
|
|
userName: '',
|
|
showMessageDivider: false,
|
|
messageFont: 'system',
|
|
showInputEstimatedTokens: false,
|
|
theme: ThemeMode.light,
|
|
windowStyle: 'transparent',
|
|
fontSize: 14,
|
|
topicPosition: 'right',
|
|
pasteLongTextAsFile: true,
|
|
clickAssistantToShowTopic: false,
|
|
manualUpdateCheck: false,
|
|
|
|
webdavHost: '',
|
|
webdavUser: '',
|
|
webdavPass: '',
|
|
webdavPath: '/cherry-studio'
|
|
}
|
|
|
|
const settingsSlice = createSlice({
|
|
name: 'settings',
|
|
initialState,
|
|
reducers: {
|
|
setShowAssistants: (state, action: PayloadAction<boolean>) => {
|
|
state.showAssistants = action.payload
|
|
},
|
|
toggleShowAssistants: (state) => {
|
|
state.showAssistants = !state.showAssistants
|
|
},
|
|
setShowTopics: (state, action: PayloadAction<boolean>) => {
|
|
state.showTopics = action.payload
|
|
},
|
|
toggleShowTopics: (state) => {
|
|
state.showTopics = !state.showTopics
|
|
},
|
|
setSendMessageShortcut: (state, action: PayloadAction<SendMessageShortcut>) => {
|
|
state.sendMessageShortcut = action.payload
|
|
},
|
|
setLanguage: (state, action: PayloadAction<string>) => {
|
|
state.language = action.payload
|
|
},
|
|
setProxyUrl: (state, action: PayloadAction<string | undefined>) => {
|
|
state.proxyUrl = action.payload
|
|
},
|
|
setUserName: (state, action: PayloadAction<string>) => {
|
|
state.userName = action.payload
|
|
},
|
|
setShowMessageDivider: (state, action: PayloadAction<boolean>) => {
|
|
state.showMessageDivider = action.payload
|
|
},
|
|
setMessageFont: (state, action: PayloadAction<'system' | 'serif'>) => {
|
|
state.messageFont = action.payload
|
|
},
|
|
setShowInputEstimatedTokens: (state, action: PayloadAction<boolean>) => {
|
|
state.showInputEstimatedTokens = action.payload
|
|
},
|
|
setTheme: (state, action: PayloadAction<ThemeMode>) => {
|
|
state.theme = action.payload
|
|
},
|
|
setFontSize: (state, action: PayloadAction<number>) => {
|
|
state.fontSize = action.payload
|
|
},
|
|
setWindowStyle: (state, action: PayloadAction<'transparent' | 'opaque'>) => {
|
|
state.windowStyle = action.payload
|
|
console.log(state.windowStyle)
|
|
},
|
|
setTopicPosition: (state, action: PayloadAction<'left' | 'right'>) => {
|
|
state.topicPosition = action.payload
|
|
},
|
|
setPasteLongTextAsFile: (state, action: PayloadAction<boolean>) => {
|
|
state.pasteLongTextAsFile = action.payload
|
|
},
|
|
setClickAssistantToShowTopic: (state, action: PayloadAction<boolean>) => {
|
|
state.clickAssistantToShowTopic = action.payload
|
|
},
|
|
setManualUpdateCheck: (state, action: PayloadAction<boolean>) => {
|
|
state.manualUpdateCheck = action.payload
|
|
},
|
|
setWebdavHost: (state, action: PayloadAction<string>) => {
|
|
state.webdavHost = action.payload
|
|
},
|
|
setWebdavUser: (state, action: PayloadAction<string>) => {
|
|
state.webdavUser = action.payload
|
|
},
|
|
setWebdavPass: (state, action: PayloadAction<string>) => {
|
|
state.webdavPass = action.payload
|
|
},
|
|
setWebdavPath: (state, action: PayloadAction<string>) => {
|
|
state.webdavPath = action.payload
|
|
}
|
|
}
|
|
})
|
|
|
|
export const {
|
|
setShowAssistants,
|
|
toggleShowAssistants,
|
|
setShowTopics,
|
|
toggleShowTopics,
|
|
setSendMessageShortcut,
|
|
setLanguage,
|
|
setProxyUrl,
|
|
setUserName,
|
|
setShowMessageDivider,
|
|
setMessageFont,
|
|
setShowInputEstimatedTokens,
|
|
setTheme,
|
|
setFontSize,
|
|
setWindowStyle,
|
|
setTopicPosition,
|
|
setPasteLongTextAsFile,
|
|
setClickAssistantToShowTopic,
|
|
setManualUpdateCheck,
|
|
setWebdavHost,
|
|
setWebdavUser,
|
|
setWebdavPass,
|
|
setWebdavPath
|
|
} = settingsSlice.actions
|
|
|
|
export default settingsSlice.reducer
|