"use client";

import { createContext, useContext, useMemo } from "react";
import { getContainer, type Container } from "./container";

const RepositoryContext = createContext<Container | null>(null);

export function RepositoryProvider({
  children,
  container,
}: {
  children: React.ReactNode;
  container?: Container;
}) {
  const value = useMemo(() => container ?? getContainer(), [container]);
  return (
    <RepositoryContext.Provider value={value}>
      {children}
    </RepositoryContext.Provider>
  );
}

export function useRepositories(): Container {
  const ctx = useContext(RepositoryContext);
  return ctx ?? getContainer();
}
