1
1
import { useCallback , useEffect , useRef } from 'react'
2
2
import { useQueryClient } from '@tanstack/react-query'
3
3
import { listen } from '@tauri-apps/api/event'
4
+ import { register , unregisterAll } from '@tauri-apps/api/globalShortcut'
4
5
import { type } from '@tauri-apps/api/os'
5
6
import { invoke } from '@tauri-apps/api/tauri'
6
7
import { appWindow , LogicalSize , WebviewWindow } from '@tauri-apps/api/window'
@@ -77,9 +78,7 @@ function App() {
77
78
} , [ isAppLocked . value ] )
78
79
79
80
useEffect ( ( ) => {
80
- const appReadyResponse = appReady ( )
81
-
82
- appReadyResponse . then ( res => {
81
+ appReady ( ) . then ( res => {
83
82
if ( res === null ) return
84
83
85
84
try {
@@ -110,6 +109,10 @@ function App() {
110
109
appDataDir : import . meta. env . TAURI_DEBUG ? appDevDataDir : appDataDir ,
111
110
appLastUpdateVersion : settings . appLastUpdateVersion ?. valueText ,
112
111
appLastUpdateDate : settings . appLastUpdateDate ?. valueText ,
112
+ isHideMacOSDockIcon : settings . isHideMacOSDockIcon ?. valueBool ,
113
+ hotKeysShowHideMainAppWindow : settings . hotKeysShowHideMainAppWindow ?. valueText ,
114
+ hotKeysShowHideQuickPasteWindow :
115
+ settings . hotKeysShowHideQuickPasteWindow ?. valueText ,
113
116
isFirstRun : settings . isFirstRun ?. valueBool ,
114
117
isFirstRunAfterUpdate : settings . isFirstRunAfterUpdate ?. valueBool ,
115
118
isHistoryDetectLanguageEnabled :
@@ -118,6 +121,8 @@ function App() {
118
121
historyExclusionList : settings . historyExclusionList ?. valueText ,
119
122
historyExclusionAppList : settings . historyExclusionAppList ?. valueText ,
120
123
isExclusionListEnabled : settings . isExclusionListEnabled ?. valueBool ,
124
+ isKeepMainWindowClosedOnRestartEnabled :
125
+ settings . isKeepMainWindowClosedOnRestartEnabled ?. valueBool ,
121
126
isExclusionAppListEnabled : settings . isExclusionAppListEnabled ?. valueBool ,
122
127
isAutoMaskWordsListEnabled : settings . isAutoMaskWordsListEnabled ?. valueBool ,
123
128
autoMaskWordsList : settings . autoMaskWordsList ?. valueText ,
@@ -168,6 +173,8 @@ function App() {
168
173
isSearchNameOrLabelOnly : settings . isSearchNameOrLabelOnly ?. valueBool ,
169
174
isSkipAutoStartPrompt : settings . isSkipAutoStartPrompt ?. valueBool ,
170
175
isShowCollectionNameOnNavBar : settings . isShowCollectionNameOnNavBar ?. valueBool ,
176
+ isHideCollectionsOnNavBar : settings . isHideCollectionsOnNavBar ?. valueBool ,
177
+ isShowNavBarItemsOnHoverOnly : settings . isShowNavBarItemsOnHoverOnly ?. valueBool ,
171
178
isShowDisabledCollectionsOnNavBarMenu :
172
179
settings . isShowDisabledCollectionsOnNavBarMenu ?. valueBool ,
173
180
userSelectedLanguage : settings . userSelectedLanguage ?. valueText ,
@@ -203,6 +210,37 @@ function App() {
203
210
isAppLocked . value = true
204
211
}
205
212
213
+ if ( settings . hotKeysShowHideMainAppWindow ?. valueText ) {
214
+ try {
215
+ register ( settings . hotKeysShowHideMainAppWindow ?. valueText , async ( ) => {
216
+ if ( document . hasFocus ( ) ) {
217
+ await appWindow . hide ( )
218
+ } else {
219
+ await appWindow . show ( )
220
+ await appWindow . setFocus ( )
221
+ }
222
+ } ) . catch ( e => {
223
+ console . error ( e )
224
+ } )
225
+ } catch ( e ) {
226
+ console . error ( e )
227
+ }
228
+ }
229
+
230
+ if ( settings . hotKeysShowHideQuickPasteWindow ?. valueText ) {
231
+ try {
232
+ register ( settings . hotKeysShowHideQuickPasteWindow ?. valueText , async ( ) => {
233
+ await uiStore . toggleHistoryQuickPasteWindow (
234
+ t ( 'PasteBar Quick Paste' , { ns : 'settings2' } )
235
+ )
236
+ } ) . catch ( e => {
237
+ console . error ( e )
238
+ } )
239
+ } catch ( e ) {
240
+ console . error ( e )
241
+ }
242
+ }
243
+
206
244
if (
207
245
! settings . appToursCompletedList ?. valueText
208
246
. split ( ',' )
@@ -419,6 +457,10 @@ function App() {
419
457
} )
420
458
421
459
return ( ) => {
460
+ if ( window . isMainWindow ) {
461
+ unregisterAll ( )
462
+ }
463
+
422
464
listenToNavigateUnlisten . then ( unlisten => {
423
465
unlisten ( )
424
466
} )
@@ -479,11 +521,14 @@ function App() {
479
521
} , [ uiState . fontSize ] )
480
522
481
523
useEffect ( ( ) => {
482
- if ( uiState . isSplitPanelView && window . isMainWindow ) {
524
+ if ( uiState . isSplitPanelView && window . isMainWindow && settingsStore . isAppReady ) {
483
525
const openHistoryWindow = async ( ) => {
484
- invoke ( 'open_history_window' , { width : 0 } ) . then ( ( ) => {
526
+ invoke ( 'open_history_window' ) . then ( ( ) => {
485
527
historyWindowOpening . value = false
486
528
setTimeout ( ( ) => {
529
+ if ( settingsStore . isKeepMainWindowClosedOnRestartEnabled ) {
530
+ appWindow . hide ( )
531
+ }
487
532
historyWindow ?. setFocus ( )
488
533
} , 300 )
489
534
} )
@@ -497,7 +542,11 @@ function App() {
497
542
historyWindow ?. setFocus ( )
498
543
} , 300 )
499
544
}
500
- } , [ uiState . isSplitPanelView ] )
545
+ } , [
546
+ uiState . isSplitPanelView ,
547
+ settingsStore . isAppReady ,
548
+ settingsStore . isKeepMainWindowClosedOnRestartEnabled ,
549
+ ] )
501
550
502
551
return (
503
552
< >
0 commit comments