You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import {useContext, useEffect, useMemo, useReducer, useState} from "react"; import RuntimeContext from "../contexts/RuntimeContext"; import {Milestone} from "../models/Milestone"; import {ValueKey} from "../models/Shared";
export function useCurrentMilestone(): Milestone | null { const {lastEvent} = useContext(RuntimeContext);
const [milestone, setMilestone] = useState<Milestone | null>(null);
useEffect(() => { if (lastEvent?.milestone) { setMilestone(lastEvent.milestone); } }, [lastEvent]);
useEffect(() => { const handle = setTimeout(() => setMilestone(null), 1000);
return () => clearTimeout(handle); }, [milestone]);
return milestone; }
export function useLastMilestoneValue(valueKey: ValueKey, primaryKey: ValueKey) { const [value, setValue] = useState<number>(0); const current = useCurrentMilestone();
useEffect(() => { if (current && current.primaryKey === primaryKey) { setValue(prev => current.current[valueKey] || prev); } }, [current, primaryKey, valueKey]);
return value; }
|