diff --git a/src/renderer/src/store/ocr.ts b/src/renderer/src/store/ocr.ts index 87d9b790bf..173a42e8b0 100644 --- a/src/renderer/src/store/ocr.ts +++ b/src/renderer/src/store/ocr.ts @@ -1,6 +1,6 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { BUILTIN_OCR_PROVIDERS, DEFAULT_OCR_PROVIDER } from '@renderer/config/ocr' -import { ImageOcrProvider, OcrProvider } from '@renderer/types' +import { ImageOcrProvider, OcrProvider, OcrProviderConfig } from '@renderer/types' export interface OcrState { providers: OcrProvider[] @@ -31,13 +31,31 @@ const ocrSlice = createSlice({ Object.assign(state.providers[index], action.payload) } }, + updateOcrProviderConfig( + state, + action: PayloadAction<{ id: string; update: Omit, 'id'> }> + ) { + const index = state.providers.findIndex((provider) => provider.id === action.payload.id) + if (index !== -1) { + if (!state.providers[index].config) { + state.providers[index].config = {} + } + Object.assign(state.providers[index].config, action.payload.update) + } + }, setImageOcrProvider(state, action: PayloadAction) { state.imageProvider = action.payload } } }) -export const { setOcrProviders, addOcrProvider, removeOcrProvider, updateOcrProvider, setImageOcrProvider } = - ocrSlice.actions +export const { + setOcrProviders, + addOcrProvider, + removeOcrProvider, + updateOcrProvider, + updateOcrProviderConfig, + setImageOcrProvider +} = ocrSlice.actions export default ocrSlice.reducer