"use client"; import { useEffect, useState } from "react"; import { useAtom } from "jotai"; import { Controller, useFieldArray, useFormContext, useWatch, } from "react-hook-form"; import { FaMinus, FaPlus } from "react-icons/fa"; import Select from "react-select"; import { clubPlayersAtom } from "@/atoms"; import { fetchClubPlayers } from "@/server/fetchClubPlayers"; interface IProps { name: string; label: string; className?: string; clubOptions: { value: string; label: string; url: string | undefined; }[]; } const TeamSelection = ({ name, label, clubOptions, className }: IProps) => { const [isLoading, setIsLoading] = useState(false); const { control } = useFormContext(); const [teamsPlayers, setTeamsPlayers] = useAtom(clubPlayersAtom); const { fields, append, remove } = useFieldArray({ control, name: `${name}_players`, // e.g., "team1_players" }); const selectedDbId = useWatch({ control, name: name, }); const selectedOption = clubOptions.find((c) => c.value === selectedDbId); const selectedId = selectedOption?.url?.split("=").pop(); useEffect(() => { const fetchPlayers = async () => { if (!selectedId) return; setIsLoading(true); try { const response = await fetchClubPlayers({ clubId: selectedId }); const data = response?.data; if (data) { setTeamsPlayers((prev) => ({ ...prev, [name]: data, })); } } catch (error) { console.error(error); } finally { setIsLoading(false); } }; fetchPlayers(); }, [selectedId, name, setTeamsPlayers]); const playerOptions = teamsPlayers[name]?.map((player) => ({ value: { nrFFE: player.nrFFE, name: player.name, elo: player.elo, }, label: `${player.name} (${player.elo})`, })) || []; return (