feat(store): 添加OCR状态管理切片

实现OCR提供商的增删改查功能,使用Redux Toolkit管理OCR相关状态
This commit is contained in:
icarus 2025-08-22 14:35:22 +08:00
parent dc1777cc81
commit 807861d207

View 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