From 60fb20cc4bd8c8056c5e5f93b300a055428cd926 Mon Sep 17 00:00:00 2001 From: Gabriel Ramos Date: Wed, 10 Jun 2026 14:29:56 -0400 Subject: [PATCH] fix(candidates): fix candidate selection loop --- app/(dashboard)/candidates/page.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/(dashboard)/candidates/page.tsx b/app/(dashboard)/candidates/page.tsx index 4444be7..cd3b9f2 100644 --- a/app/(dashboard)/candidates/page.tsx +++ b/app/(dashboard)/candidates/page.tsx @@ -235,20 +235,20 @@ export default function CandidatesPage() { if (selectIdAfterFetch) { const matched = data.find((c: Candidate) => c.id === selectIdAfterFetch); if (matched) setSelectedCandidate(matched); - } else if (data.length > 0 && !selectedCandidate) { - // Default selection if none is currently selected - setSelectedCandidate(data[0]); - } else if (selectedCandidate) { - // Keep current selection fresh - const refreshed = data.find((c: Candidate) => c.id === selectedCandidate.id); - setSelectedCandidate(refreshed || data[0] || null); + } else { + // Keep current selection fresh using functional update + setSelectedCandidate((prevSelected) => { + if (!prevSelected) return data[0] || null; + const refreshed = data.find((c: Candidate) => c.id === prevSelected.id); + return refreshed || data[0] || null; + }); } }) .catch((err) => { console.error(err); setLoading(false); }); - }, [selectedCandidate]); + }, []); useEffect(() => { fetchCandidates();