@@ -5,6 +5,7 @@ import { warn } from 'tauri-plugin-log-api';
5
5
import React , { useEffect } from 'react' ;
6
6
import { useTheme } from 'next-themes' ;
7
7
8
+ import { invoke } from '@tauri-apps/api/tauri' ;
8
9
import Screenshot from './window/Screenshot' ;
9
10
import Translate from './window/Translate' ;
10
11
import Recognize from './window/Recognize' ;
@@ -24,6 +25,7 @@ const windowMap = {
24
25
} ;
25
26
26
27
export default function App ( ) {
28
+ const [ devMode ] = useConfig ( 'dev_mode' , false ) ;
27
29
const [ appTheme ] = useConfig ( 'app_theme' , 'system' ) ;
28
30
const [ appLanguage ] = useConfig ( 'app_language' , 'en' ) ;
29
31
const [ appFont ] = useConfig ( 'app_font' , 'default' ) ;
@@ -34,6 +36,42 @@ export default function App() {
34
36
35
37
useEffect ( ( ) => {
36
38
store . load ( ) ;
39
+ } , [ ] ) ;
40
+
41
+ useEffect ( ( ) => {
42
+ if ( devMode !== null && devMode ) {
43
+ document . addEventListener ( 'keydown' , async ( e ) => {
44
+ let allowKeys = [ 'c' , 'v' , 'x' , 'a' , 'z' , 'y' ] ;
45
+ if ( e . ctrlKey && ! allowKeys . includes ( e . key . toLowerCase ( ) ) ) {
46
+ e . preventDefault ( ) ;
47
+ }
48
+ if ( e . key === 'F12' ) {
49
+ await invoke ( 'open_devtools' ) ;
50
+ }
51
+ if ( e . key . startsWith ( 'F' ) && e . key . length > 1 ) {
52
+ e . preventDefault ( ) ;
53
+ }
54
+ if ( e . key === 'Escape' ) {
55
+ await appWindow . close ( ) ;
56
+ }
57
+ } ) ;
58
+ } else {
59
+ document . addEventListener ( 'keydown' , async ( e ) => {
60
+ let allowKeys = [ 'c' , 'v' , 'x' , 'a' , 'z' , 'y' ] ;
61
+ if ( e . ctrlKey && ! allowKeys . includes ( e . key . toLowerCase ( ) ) ) {
62
+ e . preventDefault ( ) ;
63
+ }
64
+ if ( e . key . startsWith ( 'F' ) && e . key . length > 1 ) {
65
+ e . preventDefault ( ) ;
66
+ }
67
+ if ( e . key === 'Escape' ) {
68
+ await appWindow . close ( ) ;
69
+ }
70
+ } ) ;
71
+ }
72
+ } , [ devMode ] ) ;
73
+
74
+ useEffect ( ( ) => {
37
75
if ( appTheme !== null ) {
38
76
if ( appTheme !== 'system' ) {
39
77
setTheme ( appTheme ) ;
@@ -56,9 +94,15 @@ export default function App() {
56
94
}
57
95
}
58
96
}
97
+ } , [ appTheme ] ) ;
98
+
99
+ useEffect ( ( ) => {
59
100
if ( appLanguage !== null ) {
60
101
i18n . changeLanguage ( appLanguage ) ;
61
102
}
103
+ } , [ appLanguage ] ) ;
104
+
105
+ useEffect ( ( ) => {
62
106
if ( appFont !== null && appFallbackFont !== null ) {
63
107
document . documentElement . style . fontFamily = `"${ appFont === 'default' ? 'sans-serif' : appFont } ","${
64
108
appFallbackFont === 'default' ? 'sans-serif' : appFallbackFont
@@ -67,7 +111,7 @@ export default function App() {
67
111
if ( appFontSize !== null ) {
68
112
document . documentElement . style . fontSize = `${ appFontSize } px` ;
69
113
}
70
- } , [ appTheme , appLanguage , appFont , appFallbackFont , appFontSize ] ) ;
114
+ } , [ appFont , appFallbackFont , appFontSize ] ) ;
71
115
72
116
return < BrowserRouter > { windowMap [ appWindow . label ] } </ BrowserRouter > ;
73
117
}
0 commit comments