diff --git a/src/context/donate.context.tsx b/src/context/donate.context.tsx index 18e62ee68f..8c1a77b7b1 100644 --- a/src/context/donate.context.tsx +++ b/src/context/donate.context.tsx @@ -127,10 +127,9 @@ export const DonateProvider: FC = ({ children, project }) => { const isModalStatusChecked = useRef< Map >(new Map()); - const [highestModalPriorityUnchecked, setHighestModalPriorityUnchecked] = - useState( - DonateModalPriorityValues.None, - ); + const highestModalPriorityUnchecked = useRef< + DonateModalPriorityValues | 'All Checked' + >(DonateModalPriorityValues.None); const [successDonation, setSuccessDonation] = useState(); const [projectData, setProjectData] = useState(project); @@ -147,8 +146,10 @@ export const DonateProvider: FC = ({ children, project }) => { const setIsModalPriorityChecked = useCallback( (modalChecked: DonateModalPriorityValues): void => { if ( - highestModalPriorityUnchecked != 'All Checked' && - modalChecked > highestModalPriorityUnchecked + highestModalPriorityUnchecked.current != 'All Checked' && + (modalChecked <= highestModalPriorityUnchecked.current || + highestModalPriorityUnchecked.current === + DonateModalPriorityValues.None) ) { isModalStatusChecked.current.set(modalChecked, true); let highestModalStatusUnchecked = @@ -164,12 +165,13 @@ export const DonateProvider: FC = ({ children, project }) => { highestModalStatusUnchecked = modalStatus; } isAllChecked = - isAllChecked && - !!isModalStatusChecked.current.get(modalStatus); + (isAllChecked && + !!isModalStatusChecked.current.get(modalStatus)) || + modalStatus === DonateModalPriorityValues.None; } - setHighestModalPriorityUnchecked( - isAllChecked ? 'All Checked' : highestModalStatusUnchecked, - ); + highestModalPriorityUnchecked.current = isAllChecked + ? 'All Checked' + : highestModalStatusUnchecked; } }, [], @@ -235,7 +237,8 @@ export const DonateProvider: FC = ({ children, project }) => { startTimer, setQRDonationStatus: setStatus, setPendingDonationExists, - highestModalPriorityUnchecked, + highestModalPriorityUnchecked: + highestModalPriorityUnchecked.current, setIsModalPriorityChecked, draftDonationLoading: loading, }}