From 0be8b73ccfa26e6067355235c73fabc03ff78b57 Mon Sep 17 00:00:00 2001 From: icarus Date: Sat, 23 Aug 2025 19:50:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(ocr):=20=E6=B7=BB=E5=8A=A0=E6=9B=B4?= =?UTF-8?q?=E6=96=B0OCR=E6=8F=90=E4=BE=9B=E8=80=85=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/store/ocr.ts | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) 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