summaryrefslogtreecommitdiff
path: root/frontend/src/usePolling.js
diff options
context:
space:
mode:
authorlazydancer <jrpucula@gmail.com>2024-12-22 17:33:11 -0500
committerlazydancer <jrpucula@gmail.com>2024-12-22 17:33:11 -0500
commit2c5b7da8165e3f8b90748e8ced1de0e3e8d52309 (patch)
tree6d6e4e1d0cb0c7ec5e1dff83bfeda4b044258b81 /frontend/src/usePolling.js
downloadhaul-2c5b7da8165e3f8b90748e8ced1de0e3e8d52309.tar.gz
Initial
Diffstat (limited to 'frontend/src/usePolling.js')
-rw-r--r--frontend/src/usePolling.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/frontend/src/usePolling.js b/frontend/src/usePolling.js
new file mode 100644
index 0000000..3081312
--- /dev/null
+++ b/frontend/src/usePolling.js
@@ -0,0 +1,32 @@
+// usePolling.js
+import { useState, useEffect } from 'react';
+
+const usePolling = (url, interval) => {
+ const [data, setData] = useState(null);
+ const [error, setError] = useState('');
+
+ useEffect(() => {
+ const fetchData = async () => {
+ try {
+ const response = await fetch(url);
+ if (!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+ const result = await response.json();
+ setData(result);
+ setError(null);
+ } catch (err) {
+ setError('Failed to fetch data: ' + err.message);
+ }
+ };
+
+ fetchData();
+ const pollingInterval = setInterval(fetchData, interval);
+
+ return () => clearInterval(pollingInterval);
+ }, [url, interval]);
+
+ return { data, error };
+};
+
+export default usePolling; \ No newline at end of file