mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 01:38:44 +00:00
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { fromEngineActions } from "~/pages/PageEnigma/Queue/fromEngineActions";
|
|
import { useSignals } from "@preact/signals-react/runtime";
|
|
import { useCallback, useEffect } from "react";
|
|
import { currentTime } from "~/pages/PageEnigma/store";
|
|
import Queue from "~/pages/PageEnigma/Queue/Queue";
|
|
import { QueueNames } from "~/pages/PageEnigma/Queue/QueueNames";
|
|
import { toEngineActions } from "~/pages/PageEnigma/Queue/toEngineActions";
|
|
import { QueueClip } from "~/pages/PageEnigma/models/track";
|
|
|
|
interface UpdateTime {
|
|
currentTime: number;
|
|
}
|
|
|
|
interface Arguments {
|
|
action: fromEngineActions | toEngineActions;
|
|
data: QueueClip | UpdateTime;
|
|
}
|
|
|
|
export function useQueueHandler() {
|
|
useSignals();
|
|
const handleActions = useCallback(({ action, data }: Arguments) => {
|
|
console.log(`FROM ENGINE:${action} ${data}`)
|
|
switch (action) {
|
|
case fromEngineActions.UPDATE_TIME:
|
|
currentTime.value = (data as UpdateTime).currentTime;
|
|
break;
|
|
default:
|
|
throw new Error(`Unknown action ${action}`);
|
|
}
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
Queue.subscribe(QueueNames.FROM_ENGINE, handleActions);
|
|
}, [handleActions]);
|
|
}
|