Spaces:
Paused
Paused
Download web/src/hooks/useHeaderRefresh.ts from bolikoto/daili-usage: direct link, hf CLI and curl.
- Browser
- Download file 977 Bytes
-
https://huggingface.co/spaces/bolikoto/daili-usage/resolve/main/web/src/hooks/useHeaderRefresh.ts
- Command line
-
hf download hf://spaces/bolikoto/daili-usage/web/src/hooks/useHeaderRefresh.ts
-
curl -L -o useHeaderRefresh.ts https://huggingface.co/spaces/bolikoto/daili-usage/resolve/main/web/src/hooks/useHeaderRefresh.ts
977 Bytes
| import { useEffect, useRef } from 'react'; | |
| export type HeaderRefreshHandler = () => void | Promise<void>; | |
| let activeHeaderRefreshHandler: HeaderRefreshHandler | null = null; | |
| export const triggerHeaderRefresh = async () => { | |
| if (!activeHeaderRefreshHandler) return; | |
| await activeHeaderRefreshHandler(); | |
| }; | |
| export const useHeaderRefresh = (handler?: HeaderRefreshHandler | null, enabled = true) => { | |
| const lastHandlerRef = useRef<HeaderRefreshHandler | null>(null); | |
| useEffect(() => { | |
| const previousHandler = lastHandlerRef.current; | |
| lastHandlerRef.current = handler ?? null; | |
| if (!enabled || !handler) { | |
| if (previousHandler && activeHeaderRefreshHandler === previousHandler) { | |
| activeHeaderRefreshHandler = null; | |
| } | |
| return; | |
| } | |
| activeHeaderRefreshHandler = handler; | |
| return () => { | |
| if (activeHeaderRefreshHandler === handler) { | |
| activeHeaderRefreshHandler = null; | |
| } | |
| }; | |
| }, [enabled, handler]); | |
| }; | |