From b2e362a36b5d0fef6181ff2b292837e66aa171e1 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 18 Nov 2020 14:40:59 +1100 Subject: [PATCH] add a useInterval hook and move useNetwork hook to the hook folder --- ts/hooks/useInterval.ts | 25 +++++++++++++++++++ .../session/network => hooks}/useNetwork.ts | 0 2 files changed, 25 insertions(+) create mode 100644 ts/hooks/useInterval.ts rename ts/{components/session/network => hooks}/useNetwork.ts (100%) diff --git a/ts/hooks/useInterval.ts b/ts/hooks/useInterval.ts new file mode 100644 index 000000000..793a8a0f3 --- /dev/null +++ b/ts/hooks/useInterval.ts @@ -0,0 +1,25 @@ +import React from 'react'; + +export const useInterval = (callback: any, delay: number | null) => { + const savedCallback = React.useRef(); + + React.useEffect(() => { + savedCallback.current = callback; + }, [callback]); + + React.useEffect(() => { + function tick() { + if (savedCallback && savedCallback.current && savedCallback.current) { + savedCallback.current(); + } + } + if (delay !== null) { + const id = global.setInterval(tick, delay); + tick(); + return () => { + global.clearInterval(id); + }; + } + return; + }, [delay]); +}; diff --git a/ts/components/session/network/useNetwork.ts b/ts/hooks/useNetwork.ts similarity index 100% rename from ts/components/session/network/useNetwork.ts rename to ts/hooks/useNetwork.ts