import { Dispatch, useEffect } from "react";
import { api } from "../API/API";

/**
 * Gets all usernames in the system and puts them in an array
 * @param props - A setStateAction for the array you want to put users in
 * @returns {void} Nothing
 * @example
 *  const [users, setUsers] = useState<string[]>([]);
 *  GetAllUsers({ setUsersProp: setUsers });
 */
function GetAllUsers(props: {
  setUsersProp: Dispatch<React.SetStateAction<string[]>>;
}): void {
  const setUsers: Dispatch<React.SetStateAction<string[]>> = props.setUsersProp;
  useEffect(() => {
    const fetchUsers = async (): Promise<void> => {
      try {
        const token = localStorage.getItem("accessToken") ?? "";
        const response = await api.getAllUsers(token);
        if (response.success) {
          setUsers(response.data ?? []);
        } else {
          console.error("Failed to fetch users:", response.message);
        }
      } catch (error) {
        console.error("Error fetching users:", error);
      }
    };

    void fetchUsers();
  }, [setUsers]);
}

export default GetAllUsers;
