diff --git a/apps/frontend/src/routes/_assessmentLayout/assessment/index.lazy.tsx b/apps/frontend/src/routes/_assessmentLayout/assessment/index.lazy.tsx index 1f9347b..9445f1c 100644 --- a/apps/frontend/src/routes/_assessmentLayout/assessment/index.lazy.tsx +++ b/apps/frontend/src/routes/_assessmentLayout/assessment/index.lazy.tsx @@ -221,16 +221,36 @@ export default function AssessmentPage() { const currentAspect = aspects.find(aspect => aspect.aspectId === selectedAspectId); const filteredSubAspects = currentAspect ? currentAspect.subAspects : []; + // Inisialisasi flaggedQuestions dari localStorage saat komponen dimuat + useEffect(() => { + const savedFlags = localStorage.getItem("flaggedQuestions"); + if (savedFlags) { + setFlaggedQuestions(JSON.parse(savedFlags)); + } + }, []); + + // Simpan perubahan flag ke localStorage setiap kali flaggedQuestions berubah + useEffect(() => { + if (Object.keys(flaggedQuestions).length > 0) { + localStorage.setItem("flaggedQuestions", JSON.stringify(flaggedQuestions)); + } + }, [flaggedQuestions]); + // Mutation function to toggle flag const toggleFlagMutation = useMutation({ mutationFn: toggleFlagAnswer, onSuccess: (response) => { if (response && response.answer) { const { answer } = response; - setFlaggedQuestions((prevFlags) => ({ - ...prevFlags, - [answer.id]: answer.isFlagged !== null ? answer.isFlagged : false, - })); + setFlaggedQuestions((prevFlags) => { + const newFlags = { + ...prevFlags, + [answer.id]: answer.isFlagged !== null ? answer.isFlagged : false, + }; + // Simpan perubahan ke localStorage + localStorage.setItem("flaggedQuestions", JSON.stringify(newFlags)); + return newFlags; + }); } }, @@ -594,10 +614,15 @@ export default function AssessmentPage() { {/* Action Icon/Flag */} { - setFlaggedQuestions((prevFlags) => ({ - ...prevFlags, - [questionId]: !prevFlags[questionId], - })); + setFlaggedQuestions((prevFlags) => { + const newFlags = { + ...prevFlags, + [questionId]: !prevFlags[questionId], + }; + // Simpan perubahan ke localStorage + localStorage.setItem("flaggedQuestions", JSON.stringify(newFlags)); + return newFlags; + }); toggleFlagMutation.mutate(questionId); }} title={ @@ -608,7 +633,6 @@ export default function AssessmentPage() { color={flaggedQuestions[questionId] ? "red" : "white"} style={{ margin: "2px 10px", - border: "1px gray solid", borderRadius: "4px", backgroundColor: flaggedQuestions[questionId] ? "red" : "white", }} @@ -753,14 +777,14 @@ export default function AssessmentPage() { {flaggedQuestions[questionId] && ( -
+
)}
);