diff --git a/src/components/PriorityModeController.tsx b/src/components/PriorityModeController.tsx index d9eaf35e1a9a..691ce68bd3f7 100644 --- a/src/components/PriorityModeController.tsx +++ b/src/components/PriorityModeController.tsx @@ -9,6 +9,7 @@ import {isReportParticipant, isValidReport} from '@libs/ReportUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import SCREENS from '@src/SCREENS'; +import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue'; import FocusModeNotification from './FocusModeNotification'; /** @@ -25,13 +26,12 @@ import FocusModeNotification from './FocusModeNotification'; export default function PriorityModeController() { const [accountID] = useOnyx(ONYXKEYS.SESSION, {selector: (session) => session?.accountID, canBeMissing: true}); const [isLoadingReportData] = useOnyx(ONYXKEYS.IS_LOADING_REPORT_DATA, {canBeMissing: true}); - const [isInFocusMode] = useOnyx(ONYXKEYS.NVP_PRIORITY_MODE, {selector: (priorityMode) => priorityMode === CONST.PRIORITY_MODE.GSD, canBeMissing: true}); - const [hasTriedFocusMode] = useOnyx(ONYXKEYS.NVP_TRY_FOCUS_MODE, {canBeMissing: true}); + const [isInFocusMode, isInFocusModeMetadata] = useOnyx(ONYXKEYS.NVP_PRIORITY_MODE, {selector: (priorityMode) => priorityMode === CONST.PRIORITY_MODE.GSD, canBeMissing: true}); + const [hasTriedFocusMode, hasTriedFocusModeMetadata] = useOnyx(ONYXKEYS.NVP_TRY_FOCUS_MODE, {canBeMissing: true}); const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {canBeMissing: true}); const currentRouteName = useCurrentRouteName(); const [shouldShowModal, setShouldShowModal] = useState(false); const closeModal = useCallback(() => setShouldShowModal(false), []); - const validReportCount = useMemo(() => { let count = 0; Object.values(allReports ?? {}).forEach((report) => { @@ -50,10 +50,11 @@ export default function PriorityModeController() { // Listen for state changes and trigger the #focus mode when appropriate useEffect(() => { // Wait for Onyx state to fully load - if (isLoadingReportData !== false || isInFocusMode === undefined || hasTriedFocusMode === undefined || !accountID) { + if (isLoadingReportData !== false || !accountID || isLoadingOnyxValue(isInFocusModeMetadata, hasTriedFocusModeMetadata)) { return; } + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing if (hasSwitched.current || isInFocusMode || hasTriedFocusMode) { return; } @@ -74,7 +75,7 @@ export default function PriorityModeController() { updateChatPriorityMode(CONST.PRIORITY_MODE.GSD, true); setShouldShowModal(true); hasSwitched.current = true; - }, [accountID, currentRouteName, hasTriedFocusMode, isInFocusMode, isLoadingReportData, validReportCount]); + }, [accountID, currentRouteName, hasTriedFocusMode, hasTriedFocusModeMetadata, isInFocusMode, isInFocusModeMetadata, isLoadingReportData, validReportCount]); return shouldShowModal ? : null; }