"use client";

import { useTableFilters } from "@/components/TableBuilder/hooks";
import { useProjectSocket } from "@/hooks/socket/project";
import fetchSubdomainsInfo from "@/services/projects/fetchSubdomainsInfo";
import React from "react";

const ProjectContext = React.createContext<ProjectsContextProps>(undefined);

const Projects = ({ children }: ProjectsProviderProps) => {
  const { list, count, setList, filters, setFilters, fetchData } =
    useTableFilters({
      id: "projects",
      searchFields: ["name", "email"],
      fetch: fetchSubdomainsInfo,
    });

  useProjectSocket({ list, setList, fetchData });

  return (
    <ProjectContext.Provider
      value={{ list, count, filters, setFilters, fetchData }}
    >
      {children}
    </ProjectContext.Provider>
  );
};

export const useProjects = () => {
  const context = React.useContext(ProjectContext);
  if (!context) {
    throw new Error("useProjects must be used within a ProjectsProvider");
  }
  return context;
};

export { Projects };
