webapp/lib/use-backend-tools.ts (24 lines of code) (raw):

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; }