import type { Event } from "@/entities/event";
import type { EventPlace } from "@/entities/place";
import { ErrorMessage } from "@/shared/ui/ErrorMessage";
import { Loader } from "@/shared/ui/Loader";
import { useEventsAndPlaces } from "../api/useEventsAndPlaces";

type EventDataProviderProps = {
  children: (data: {
    events: Event[];
    places: EventPlace[];
  }) => React.ReactNode;
};

export const EventDataProvider: React.FC<EventDataProviderProps> = ({
  children,
}) => {
  const { events, places, isLoading, errors } = useEventsAndPlaces();

  if (isLoading) return <Loader />;
  if (errors.length > 0) return <ErrorMessage errors={errors} />;
  if (!events || !places)
    return (
      <ErrorMessage errors={new Error("Internal error. Try again later.")} />
    );

  return <>{children({ events, places })}</>;
};

Graph