cherry-studio/src/renderer/src/store/nutstore.ts
Rudbeckia.hirta.L e9ab193a24
feat: support skipping files during backup(slim backup) (#6075)
* feat: support skipping files during backup

* 修复 lint

* 修复 lint

---------

Co-authored-by: daisai.1 <daisai.1@bytedance.com>
2025-05-17 19:20:40 +08:00

64 lines
1.7 KiB
TypeScript

import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { WebDAVSyncState } from './backup'
export interface NutstoreSyncState extends WebDAVSyncState {}
export interface NutstoreState {
nutstoreToken: string | null
nutstorePath: string
nutstoreAutoSync: boolean
nutstoreSyncInterval: number
nutstoreSyncState: NutstoreSyncState
nutstoreSkipBackupFile: boolean
}
const initialState: NutstoreState = {
nutstoreToken: '',
nutstorePath: '/cherry-studio',
nutstoreAutoSync: false,
nutstoreSyncInterval: 0,
nutstoreSyncState: {
lastSyncTime: null,
syncing: false,
lastSyncError: null
},
nutstoreSkipBackupFile: false
}
const nutstoreSlice = createSlice({
name: 'nutstore',
initialState,
reducers: {
setNutstoreToken: (state, action: PayloadAction<string>) => {
state.nutstoreToken = action.payload
},
setNutstorePath: (state, action: PayloadAction<string>) => {
state.nutstorePath = action.payload
},
setNutstoreAutoSync: (state, action: PayloadAction<boolean>) => {
state.nutstoreAutoSync = action.payload
},
setNutstoreSyncInterval: (state, action: PayloadAction<number>) => {
state.nutstoreSyncInterval = action.payload
},
setNutstoreSyncState: (state, action: PayloadAction<Partial<WebDAVSyncState>>) => {
state.nutstoreSyncState = { ...state.nutstoreSyncState, ...action.payload }
},
setNutstoreSkipBackupFile: (state, action: PayloadAction<boolean>) => {
state.nutstoreSkipBackupFile = action.payload
}
}
})
export const {
setNutstoreToken,
setNutstorePath,
setNutstoreAutoSync,
setNutstoreSyncInterval,
setNutstoreSyncState,
setNutstoreSkipBackupFile
} = nutstoreSlice.actions
export default nutstoreSlice.reducer