You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
| import { remote } from 'electron';
 | |
| import { useCallback, useEffect, useState } from 'react';
 | |
| import { isElectronWindowFocused } from '../session/utils/WindowUtils';
 | |
| 
 | |
| export function useAppIsFocused() {
 | |
|   const [isAppFocused, setIsAppFocused] = useState(false);
 | |
| 
 | |
|   useEffect(() => {
 | |
|     setIsAppFocused(isElectronWindowFocused());
 | |
|   }, []);
 | |
| 
 | |
|   const onFocusCallback = useCallback(
 | |
|     (_event, win) => {
 | |
|       if (win.webContents.id === 1) {
 | |
|         setIsAppFocused(true);
 | |
|       }
 | |
|     },
 | |
|     [setIsAppFocused]
 | |
|   );
 | |
| 
 | |
|   const onBlurCallback = useCallback(
 | |
|     (_event, win) => {
 | |
|       if (win.webContents.id === 1) {
 | |
|         setIsAppFocused(false);
 | |
|       }
 | |
|     },
 | |
|     [setIsAppFocused]
 | |
|   );
 | |
| 
 | |
|   useEffect(() => {
 | |
|     remote.app.on('browser-window-focus', onFocusCallback);
 | |
|     remote.app.on('browser-window-blur', onBlurCallback);
 | |
|     return () => {
 | |
|       remote.app.removeListener('browser-window-blur', onBlurCallback);
 | |
|       remote.app.removeListener('browser-window-focus', onFocusCallback);
 | |
|     };
 | |
|   });
 | |
| 
 | |
|   return isAppFocused;
 | |
| }
 |