UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

34 lines (33 loc) • 1.12 kB
import { useEffect, useRef } from "react"; const useDelayedPrefetchController = ()=>{ const timeoutsRef = useRef(new Map()); useEffect(()=>{ const timeouts = timeoutsRef.current; return ()=>{ for (const timeout of timeouts.values())clearTimeout(timeout); timeouts.clear(); }; }, []); const schedulePrefetch = (execute, prefetchId, delay)=>{ const existing = timeoutsRef.current.get(prefetchId); if (existing) clearTimeout(existing); const timeoutId = setTimeout(()=>{ timeoutsRef.current.delete(prefetchId); Promise.resolve().then(execute).catch(()=>{}); }, delay); timeoutsRef.current.set(prefetchId, timeoutId); return prefetchId; }; const cancelPrefetch = (prefetchId)=>{ const timeout = timeoutsRef.current.get(prefetchId); if (timeout) { clearTimeout(timeout); timeoutsRef.current.delete(prefetchId); } }; return { schedulePrefetch, cancelPrefetch }; }; export { useDelayedPrefetchController };