import { useEffect, useState } from 'react';

import { ipcChannels } from '../../../shared/ipc/contracts';
import type { AppPlayer, AppPlayerTeam } from '../../../shared/types';
import { getDndApi } from '../dndApi';

export function useAppPlayers(): { players: AppPlayer[]; teams: AppPlayerTeam[] } {
  const api = getDndApi();
  const [players, setPlayers] = useState<AppPlayer[]>([]);
  const [teams, setTeams] = useState<AppPlayerTeam[]>([]);

  useEffect(() => {
    void api.invoke(ipcChannels.players.list, {}).then((res) => {
      setPlayers(res.players);
      setTeams(res.teams);
    });
    return api.on(ipcChannels.players.stateChanged, ({ players: nextPlayers, teams: nextTeams }) => {
      setPlayers(nextPlayers);
      setTeams(nextTeams);
    });
  }, [api]);

  return { players, teams };
}
