"use client";

import { createContext, useCallback, useContext, useState, type ReactNode } from "react";

import { ImportContactsModal } from "../components/import-contacts-modal";

interface ImportContactsModalContextValue {
  openImportModal: (listId?: string) => void;
}

const ImportContactsModalContext = createContext<ImportContactsModalContextValue | null>(null);

export function ImportContactsModalProvider({ children }: { children: ReactNode }) {
  const [open, setOpen] = useState(false);
  const [listId, setListId] = useState<string | undefined>(undefined);

  const openImportModal = useCallback((targetListId?: string) => {
    setListId(targetListId);
    setOpen(true);
  }, []);

  return (
    <ImportContactsModalContext.Provider value={{ openImportModal }}>
      {children}
      <ImportContactsModal open={open} onOpenChange={setOpen} initialListId={listId} />
    </ImportContactsModalContext.Provider>
  );
}

export function useImportContactsModal() {
  const context = useContext(ImportContactsModalContext);
  if (!context) {
    throw new Error("useImportContactsModal must be used within an ImportContactsModalProvider");
  }
  return context;
}
