From 5ee7718054a787cc6b234f34504501649c4ac069 Mon Sep 17 00:00:00 2001 From: icarus Date: Sat, 23 Aug 2025 20:23:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0OCR=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E8=80=85=E9=92=A9=E5=AD=90=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现useOcrProvider钩子用于获取和更新OCR提供者配置 --- src/renderer/src/hooks/useOcrProvider.ts | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/renderer/src/hooks/useOcrProvider.ts diff --git a/src/renderer/src/hooks/useOcrProvider.ts b/src/renderer/src/hooks/useOcrProvider.ts new file mode 100644 index 0000000000..2407666f04 --- /dev/null +++ b/src/renderer/src/hooks/useOcrProvider.ts @@ -0,0 +1,30 @@ +import { loggerService } from '@logger' +import { useAppSelector } from '@renderer/store' +import { updateOcrProviderConfig } from '@renderer/store/ocr' +import { OcrProviderConfig } from '@renderer/types' +import { useTranslation } from 'react-i18next' +import { useDispatch } from 'react-redux' + +const logger = loggerService.withContext('useOcrProvider') + +export const useOcrProvider = (id: string) => { + const { t } = useTranslation() + const dispatch = useDispatch() + const providers = useAppSelector((state) => state.ocr.providers) + const provider = providers.find((p) => p.id === id) + + if (!provider) { + logger.error(`Ocr Provider ${id} not found`) + window.message.error(t('ocr.provider.not_found')) + throw new Error(`Ocr Provider ${id} not found`) + } + + const updateConfig = (update: Partial) => { + dispatch(updateOcrProviderConfig({ id: provider.id, update })) + } + + return { + provider, + updateConfig + } +}