import { remote } from 'electron'; import { useCallback, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { isElectronWindowFocused } from '../session/utils/WindowUtils'; import { setIsAppFocused } from '../state/ducks/section'; import { getIsAppFocused } from '../state/selectors/section'; export function useAppIsFocused() { const dispatch = useDispatch(); const isFocused = useSelector(getIsAppFocused); useEffect(() => { dispatch(setIsAppFocused(isElectronWindowFocused())); }, []); const onFocusCallback = useCallback((_event, win) => { if (win.webContents.id === 1) { dispatch(setIsAppFocused(true)); } }, []); const onBlurCallback = useCallback((_event, win) => { if (win.webContents.id === 1) { dispatch(setIsAppFocused(false)); } }, []); 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 isFocused; }