diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
| commit | 3e89d2998588f8e35c524e523ba2ee853f0f6475 (patch) | |
| tree | 57221f96c1259b3b07e3ddf8c1adefc502b9d8eb /apps/web/src/hooks/actions/use-action-handler.ts | |
| parent | 729d10592f4e802f91c555c309ff3ba4b119f843 (diff) | |
| download | opencut-3e89d2998588f8e35c524e523ba2ee853f0f6475.tar.gz | |
refactor: restructure files to their domains, new preview overlay system, and dep graph
Diffstat (limited to 'apps/web/src/hooks/actions/use-action-handler.ts')
| -rw-r--r-- | apps/web/src/hooks/actions/use-action-handler.ts | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/apps/web/src/hooks/actions/use-action-handler.ts b/apps/web/src/hooks/actions/use-action-handler.ts deleted file mode 100644 index 3f6dbd21..00000000 --- a/apps/web/src/hooks/actions/use-action-handler.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { useCallback, useEffect, useRef } from "react"; -import type { - TAction, - TActionFunc, - TActionHandlerOptions, - TArgOfAction, - TInvocationTrigger, -} from "@/lib/actions"; -import { bindAction, unbindAction } from "@/lib/actions"; - -export function useActionHandler<A extends TAction>( - action: A, - handler: TActionFunc<A>, - isActive: TActionHandlerOptions, -) { - const handlerRef = useRef<TActionFunc<A>>(handler); - const isBoundRef = useRef(false); - - useEffect(() => { - handlerRef.current = handler; - }, [handler]); - - const stableHandler = useCallback( - (...parameters: [TArgOfAction<A>, TInvocationTrigger?]) => { - ( - handlerRef.current as ( - ...handlerParameters: [TArgOfAction<A>, TInvocationTrigger?] - ) => void - )(...parameters); - }, - [], - ) as TActionFunc<A>; - - useEffect(() => { - const shouldBind = - isActive === undefined || - (typeof isActive === "boolean" ? isActive : isActive.current); - - if (shouldBind && !isBoundRef.current) { - bindAction(action, stableHandler); - isBoundRef.current = true; - } else if (!shouldBind && isBoundRef.current) { - unbindAction(action, stableHandler); - isBoundRef.current = false; - } - - return () => { - unbindAction(action, stableHandler); - isBoundRef.current = false; - }; - }, [action, stableHandler, isActive]); -} |
