import { eventQueries } from "@/entities/event";
import { DisplayUser } from "@/features/display-user";
import { ErrorMessage } from "@/shared/ui/ErrorMessage";
import { Loader } from "@/shared/ui/Loader";

import { useQuery } from "@tanstack/react-query";
import { useSearchParams } from "react-router";

type EventAttendeesProps = {
  eventId: number;
  searchParamName?: string;
};

export const EventAttendees: React.FC<EventAttendeesProps> = ({
  eventId,
  searchParamName = "search",
}) => {
  const [searchParams] = useSearchParams();
  const searchQuery = searchParams.get(searchParamName) || undefined;

  const {
    data: attendees,
    error,
    isLoading,
  } = useQuery(eventQueries.attendees(eventId, searchQuery));

  if (isLoading) return <Loader />;
  if (error) return <ErrorMessage errors={error} />;
  if (!attendees) return <ErrorMessage errors={error} />;

  if (attendees.length < 1) {
    return (
      <div className="w-full aspect-square flex flex-col gap-3 items-center justify-center text-center">
        <p className="text-gray-500 text-lg font-semibold">
          No attendees for this event yet
        </p>
      </div>
    );
  }
  return (
    <div className="px-6">
      <table className="w-full text-left table-auto min-w-max">
        <thead>
          <tr>
            <th>User</th>
            <th>Tickets</th>
          </tr>
        </thead>
        <tbody>
          {attendees.map((a) => (
            <tr key={a.address}>
              <td>
                <DisplayUser address={a.address} />
              </td>
              <td>{a.ticketsCount}</td>
            </tr>
          ))}
        </tbody>
      </table>
    </div>
  );
};

Graph