"use client";

import { useEffect, useState } from "react";

export function useMockupProgress(
  active: boolean,
  phaseOneMs = 3000,
  phaseTwoMs = 2000,
) {
  const [phase, setPhase] = useState<0 | 1 | 2>(0);
  const [processed, setProcessed] = useState(false);

  useEffect(() => {
    if (!active) return;

    const startFrame = requestAnimationFrame(() => setPhase(1));
    const midTimer = setTimeout(() => setPhase(2), phaseOneMs);
    const doneTimer = setTimeout(() => setProcessed(true), phaseOneMs + phaseTwoMs);

    return () => {
      cancelAnimationFrame(startFrame);
      clearTimeout(midTimer);
      clearTimeout(doneTimer);
    };
  }, [active, phaseOneMs, phaseTwoMs]);

  const transitionMs = phase === 1 ? phaseOneMs : phase === 2 ? phaseTwoMs : 0;

  return { phase, processed, transitionMs };
}
