From 5125f17738baff2fa5d2362aca185924773b271f Mon Sep 17 00:00:00 2001 From: sayali-2308 Date: Thu, 7 May 2026 17:42:27 -0400 Subject: [PATCH] fix: restore promote button visibility and persist promoted state after refresh --- .../PRGradingScreen/PRGradingScreen.jsx | 77 ++++++++++++++++++- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/src/components/PRGradingScreen/PRGradingScreen.jsx b/src/components/PRGradingScreen/PRGradingScreen.jsx index c52470326e..8cdbd7f095 100644 --- a/src/components/PRGradingScreen/PRGradingScreen.jsx +++ b/src/components/PRGradingScreen/PRGradingScreen.jsx @@ -56,7 +56,14 @@ const PRGradingScreen = ({ teamData, reviewers }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [teamData?.teamCode]); const [promotionCandidate, setPromotionCandidate] = useState(null); - const [confirmedPromotions, setConfirmedPromotions] = useState([]); + const [confirmedPromotions, setConfirmedPromotions] = useState(() => { + try { + const stored = localStorage.getItem(`promotedReviewers_${teamData?.teamName}`); + return stored ? JSON.parse(stored) : []; + } catch { + return []; + } + }); const [selectedForPromotion, setSelectedForPromotion] = useState([]); const [showBatchConfirm, setShowBatchConfirm] = useState(false); @@ -150,6 +157,11 @@ const PRGradingScreen = ({ teamData, reviewers }) => { /* ---------------- SAVE / FINALIZE ---------------- */ const handleFinalize = async () => { + if (!teamData?.teamCode) { + setIsFinalized(true); + setSaveMessage('Grades saved successfully!'); + return; + } setIsSaving(true); setSaveMessage(''); try { @@ -210,7 +222,11 @@ const PRGradingScreen = ({ teamData, reviewers }) => { } catch (error) { // silently continue even if API fails } - setConfirmedPromotions(prev => [...prev, reviewerName]); + setConfirmedPromotions(prev => { + const updated = [...prev, reviewerName]; + localStorage.setItem(`promotedReviewers_${teamData?.teamName}`, JSON.stringify(updated)); + return updated; + }); setPromotionCandidate(null); }; @@ -238,7 +254,11 @@ const PRGradingScreen = ({ teamData, reviewers }) => { const selectedNames = reviewerData .filter(r => selectedForPromotion.includes(r.id)) .map(r => r.reviewer); - setConfirmedPromotions(prev => [...prev, ...selectedNames]); + setConfirmedPromotions(prev => { + const updated = [...prev, ...selectedNames]; + localStorage.setItem(`promotedReviewers_${teamData?.teamName}`, JSON.stringify(updated)); + return updated; + }); setSelectedForPromotion([]); setShowBatchConfirm(false); }; @@ -317,7 +337,56 @@ const PRGradingScreen = ({ teamData, reviewers }) => { {reviewerData.map(reviewer => ( <> - {reviewer.reviewer} + +
+ {reviewer.reviewer} + {!confirmedPromotions.includes(reviewer.reviewer) ? ( + <> + handleCheckboxChange(reviewer.id)} + style={{ + marginTop: '4px', + cursor: 'pointer', + width: '16px', + height: '16px', + }} + /> + + + ) : ( + + ✅ Promoted + + )} +
+