mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-28 05:11:24 +08:00
* chore: import opendal * feat: 添加S3备份支持及相关设置界面 - 在IpcChannel中新增S3备份相关IPC事件,支持备份、恢复、 列表、删除文件及连接检测 - 在ipc主进程注册对应的S3备份处理函数,集成backupManager - 新增S3设置页面,支持配置Endpoint、Region、Bucket、AccessKey等 参数,并提供同步和备份策略的UI控制 - 删除未使用的RemoteStorage.ts,简化代码库 提升备份功能的灵活性,支持S3作为远程存储目标 * feat(S3 Backup): 完善S3备份功能 - 支持自动备份 - 优化设置前端 - 优化备份恢复代码 * feat(i18n): add S3 storage translations * feat(settings): 优化数据设置页面和S3设置页面UI * feat(settings): optimize S3 settings state structure and update usage * refactor: simplify S3 backup and restore modal logic * feat(s3 backup): improve S3 settings defaults and modal props * fix(i18n): optimize S3 access key translations * feat(backup): optimize logging and progress reporting * fix(settings): set S3 maxBackups as unlimited by default * chore(package): restore opendal dependency in package.json --------- Co-authored-by: suyao <sy20010504@gmail.com>
42 lines
991 B
TypeScript
42 lines
991 B
TypeScript
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
|
|
|
export interface WebDAVSyncState {
|
|
lastSyncTime: number | null
|
|
syncing: boolean
|
|
lastSyncError: string | null
|
|
}
|
|
|
|
export interface BackupState {
|
|
webdavSync: WebDAVSyncState
|
|
s3Sync: WebDAVSyncState
|
|
}
|
|
|
|
const initialState: BackupState = {
|
|
webdavSync: {
|
|
lastSyncTime: null,
|
|
syncing: false,
|
|
lastSyncError: null
|
|
},
|
|
s3Sync: {
|
|
lastSyncTime: null,
|
|
syncing: false,
|
|
lastSyncError: null
|
|
}
|
|
}
|
|
|
|
const backupSlice = createSlice({
|
|
name: 'backup',
|
|
initialState,
|
|
reducers: {
|
|
setWebDAVSyncState: (state, action: PayloadAction<Partial<WebDAVSyncState>>) => {
|
|
state.webdavSync = { ...state.webdavSync, ...action.payload }
|
|
},
|
|
setS3SyncState: (state, action: PayloadAction<Partial<WebDAVSyncState>>) => {
|
|
state.s3Sync = { ...state.s3Sync, ...action.payload }
|
|
}
|
|
}
|
|
})
|
|
|
|
export const { setWebDAVSyncState, setS3SyncState } = backupSlice.actions
|
|
export default backupSlice.reducer
|