diff --git a/src/renderer/hooks/timers/useInactivityTimer.ts b/src/renderer/hooks/timers/useInactivityTimer.ts index ab602b0d3..7cb74c4af 100644 --- a/src/renderer/hooks/timers/useInactivityTimer.ts +++ b/src/renderer/hooks/timers/useInactivityTimer.ts @@ -1,5 +1,7 @@ import { useCallback, useEffect, useRef } from 'react'; +import { isOnline } from '../../utils/network'; + const events = ['mousedown', 'keypress', 'click']; /** @@ -23,8 +25,10 @@ export const useInactivityTimer = (callback: () => void, delay: number) => { if (delay !== null && savedCallback.current) { timeoutRef.current = setTimeout(() => { - // Fire callback once inactivity threshold reached - savedCallback.current(); + // Fire callback once inactivity threshold reached if online + if (savedCallback.current && isOnline()) { + savedCallback.current(); + } // Schedule next run while still inactive resetTimer(); diff --git a/src/renderer/hooks/timers/useIntervalTimer.ts b/src/renderer/hooks/timers/useIntervalTimer.ts index 930af231e..89c556128 100644 --- a/src/renderer/hooks/timers/useIntervalTimer.ts +++ b/src/renderer/hooks/timers/useIntervalTimer.ts @@ -1,5 +1,7 @@ import { useEffect, useRef } from 'react'; +import { isOnline } from '../../utils/network'; + /** * Hook that triggers a callback after a specified period of time. * @@ -16,7 +18,9 @@ export const useIntervalTimer = (callback: () => void, delay: number) => { // Set up the interval. useEffect(() => { function tick() { - savedCallback.current(); + if (savedCallback.current && isOnline()) { + savedCallback.current(); + } } if (delay !== null) { diff --git a/src/renderer/utils/network.ts b/src/renderer/utils/network.ts new file mode 100644 index 000000000..1b3a5ec88 --- /dev/null +++ b/src/renderer/utils/network.ts @@ -0,0 +1,6 @@ +// Simple utility to centralize online status checks +export const isOnline = (): boolean => { + return typeof navigator !== 'undefined' ? navigator.onLine : true; +}; + +export default isOnline;