@@ -15,7 +15,7 @@ import CloseIcon from '../../../../components/svg/Close'
1515import CursorClick from '../../../../components/svg/CursorClick'
1616import LoadingCircle from '../../../../components/svg/LoadingCircle'
1717import translationStack from '../../common/translation-stack'
18- import { TranslateJob } from '../../common/types'
18+ import { AllJobTypes , DirectiveJob } from '../../common/types'
1919import { ConfigContext , ConfigState } from '../../providers/config'
2020import { useTranslateJobsDispatch } from '../../providers/translate-jobs'
2121import OCRTool , { OnFinish } from '../OCRTool'
@@ -48,22 +48,46 @@ const App: React.FC = () => {
4848 } , [ ] )
4949
5050 const onNewJob = useCallback (
51- ( job : TranslateJob ) => {
51+ ( job : AllJobTypes ) => {
5252 logger . debug ( {
5353 msg : 'new job' ,
5454 job,
5555 } )
5656
57- if ( ! job . sourceLang ) {
58- job . sourceLang = 'EN'
57+ const doDirectiveJob = ( job : DirectiveJob ) : void => {
58+ switch ( job . directive ) {
59+ case 'toggle_ocr' :
60+ if ( enableOCR ) {
61+ setShowOCRTool ( ( oldVal ) => ! oldVal )
62+ } else {
63+ enqueueSnackbar ( '无法开启 OCR,请确认已正确设置腾讯云 OCR' , {
64+ variant : 'warning' ,
65+ } )
66+ }
67+ break
68+ default :
69+ // no default
70+ }
5971 }
6072
61- dispatch ( {
62- type : 'add' ,
63- payload : job ,
64- } )
73+ switch ( job . type ) {
74+ case 'translate' :
75+ if ( ! job . sourceLang ) {
76+ job . sourceLang = 'EN'
77+ }
78+
79+ dispatch ( {
80+ type : 'add' ,
81+ payload : job ,
82+ } )
83+ break
84+
85+ case 'directive' :
86+ doDirectiveJob ( job )
87+ break
88+ }
6589 } ,
66- [ dispatch ] ,
90+ [ dispatch , enableOCR , enqueueSnackbar ] ,
6791 )
6892
6993 const onDragStart : DraggableEventHandler = useCallback ( ( e ) => {
@@ -104,6 +128,7 @@ const App: React.FC = () => {
104128 } )
105129 . then ( ( result : string [ ] ) => {
106130 translationStack . push ( {
131+ type : 'translate' ,
107132 id : uuid ( ) ,
108133 text : result . join ( '\n' ) ,
109134 } )
@@ -114,7 +139,7 @@ const App: React.FC = () => {
114139 . finally ( ( ) => {
115140 setLoadingOCR ( false )
116141 } )
117- } , 100 )
142+ } , 50 )
118143 } ,
119144 [ enqueueSnackbar ] ,
120145 )
@@ -168,6 +193,7 @@ const App: React.FC = () => {
168193 < span tw = "flex space-x-3" >
169194 { enableOCR ? (
170195 < IconButton
196+ title = "开启 OCR 识别"
171197 ref = { ocrToolButtonRef }
172198 tw = "p-1 text-gray-800"
173199 onClick = { ( ) => ! loadingOCR && setShowOCRTool ( true ) } >
@@ -184,6 +210,7 @@ const App: React.FC = () => {
184210 ) : undefined }
185211
186212 < IconButton
213+ title = "关闭"
187214 ref = { closeButtonRef }
188215 tw = "p-1 text-gray-800"
189216 onClick = { ( ) => setClose ( true ) } >
0 commit comments