import { useLabContext } from "@/components/labs/context";
import { LabWebConsolesContext } from "@/components/labs/lab-web-consoles-context";
import { createConsolesStore } from "@/components/labs/lab-web-consoles-store";
import { type ReactNode, useEffect, useMemo } from "react";

export function LabWebConsolesProvider({ children }: { children: ReactNode }) {
  const { isReady, meta } = useLabContext();
  const supported =
    isReady &&
    meta != null &&
    (meta.ssh_max_count == null || meta.ssh_max_count > 0);
  const maxCount = meta?.ssh_max_count ?? 5;

  const store = useMemo(() => createConsolesStore(), []);

  useEffect(() => {
    store.setState(() => ({
      supported,
      maxCount,
    }));
  }, [store, supported, maxCount]);

  return (
    <LabWebConsolesContext value={store}>{children}</LabWebConsolesContext>
  );
}
