mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-26 20:12:38 +08:00
feat(store): 添加OCR状态管理切片
实现OCR提供商的增删改查功能,使用Redux Toolkit管理OCR相关状态
This commit is contained in:
parent
dc1777cc81
commit
807861d207
39
src/renderer/src/store/ocr.ts
Normal file
39
src/renderer/src/store/ocr.ts
Normal file
@ -0,0 +1,39 @@
|
||||
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
||||
import { BUILTIN_OCR_PROVIDERS, DEFAULT_OCR_PROVIDER } from '@renderer/config/ocr'
|
||||
import { OcrProvider } from '@renderer/types/ocr'
|
||||
|
||||
export interface OcrState {
|
||||
providers: OcrProvider[]
|
||||
imageProvider: OcrProvider
|
||||
}
|
||||
|
||||
const initialState: OcrState = {
|
||||
providers: BUILTIN_OCR_PROVIDERS,
|
||||
imageProvider: DEFAULT_OCR_PROVIDER.image
|
||||
}
|
||||
|
||||
const ocrSlice = createSlice({
|
||||
name: 'ocr',
|
||||
initialState,
|
||||
reducers: {
|
||||
setOcrProviders(state, action: PayloadAction<OcrProvider[]>) {
|
||||
state.providers = action.payload
|
||||
},
|
||||
addOcrProvider(state, action: PayloadAction<OcrProvider>) {
|
||||
state.providers.push(action.payload)
|
||||
},
|
||||
removeOcrProvider(state, action: PayloadAction<OcrProvider>) {
|
||||
state.providers = state.providers.filter((provider) => provider.id !== action.payload.id)
|
||||
},
|
||||
updatePreprocessProvider(state, action: PayloadAction<Partial<OcrProvider>>) {
|
||||
const index = state.providers.findIndex((provider) => provider.id === action.payload.id)
|
||||
if (index !== -1) {
|
||||
Object.assign(state.providers[index], action.payload)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export const { setOcrProviders, addOcrProvider, removeOcrProvider, updatePreprocessProvider } = ocrSlice.actions
|
||||
|
||||
export default ocrSlice.reducer
|
||||
Loading…
Reference in New Issue
Block a user