diff options
| author | Ilan Bigio <ilan@openai.com> | 2024-12-16 13:06:08 -0800 |
|---|---|---|
| committer | Ilan Bigio <ilan@openai.com> | 2024-12-19 16:08:22 -0500 |
| commit | 20009aed53d8864c9204d43a17895168a777d2cc (patch) | |
| tree | 754dded819869bc34a8a2a02c66ea72dac1ccd24 /webapp/lib/use-backend-tools.ts | |
Initial commit
Diffstat (limited to 'webapp/lib/use-backend-tools.ts')
| -rw-r--r-- | webapp/lib/use-backend-tools.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/webapp/lib/use-backend-tools.ts b/webapp/lib/use-backend-tools.ts new file mode 100644 index 0000000..c201163 --- /dev/null +++ b/webapp/lib/use-backend-tools.ts @@ -0,0 +1,32 @@ +import { useState, useEffect } from "react"; + +// Custom hook to fetch backend tools repeatedly +export function useBackendTools(url: string, intervalMs: number) { + const [tools, setTools] = useState<any[]>([]); + + useEffect(() => { + let isMounted = true; + + const fetchTools = () => { + fetch(url) + .then((res) => res.json()) + .then((data) => { + if (isMounted) setTools(data); + }) + .catch((error) => { + // On failure, we just let it retry after interval + console.error("Error fetching backend tools:", error); + }); + }; + + fetchTools(); + const intervalId = setInterval(fetchTools, intervalMs); + + return () => { + isMounted = false; + clearInterval(intervalId); + }; + }, [url, intervalMs]); + + return tools; +} |
