diff --git a/src/libs/Navigation/Navigation.js b/src/libs/Navigation/Navigation.js index d61eb7143de0..952faaf9a6b7 100644 --- a/src/libs/Navigation/Navigation.js +++ b/src/libs/Navigation/Navigation.js @@ -17,11 +17,6 @@ const navigationIsReadyPromise = new Promise((resolve) => { resolveNavigationIsReadyPromise = resolve; }); -let resolveReportScreenIsReadyPromise; -let reportScreenIsReadyPromise = new Promise((resolve) => { - resolveReportScreenIsReadyPromise = resolve; -}); - let pendingRoute = null; /** @@ -219,20 +214,6 @@ function setIsNavigationReady() { resolveNavigationIsReadyPromise(); } -function resetIsReportScreenReadyPromise() { - reportScreenIsReadyPromise = new Promise((resolve) => { - resolveReportScreenIsReadyPromise = resolve; - }); -} - -function isReportScreenReady() { - return reportScreenIsReadyPromise; -} - -function setIsReportScreenIsReady() { - resolveReportScreenIsReadyPromise(); -} - export default { canNavigate, navigate, @@ -244,9 +225,6 @@ export default { isNavigationReady, setIsNavigationReady, getReportIDFromRoute, - resetIsReportScreenReadyPromise, - isReportScreenReady, - setIsReportScreenIsReady, getTopmostReportId, }; diff --git a/src/libs/SidebarUtils.js b/src/libs/SidebarUtils.js index 87e8b97d0bd0..7005c6594772 100644 --- a/src/libs/SidebarUtils.js +++ b/src/libs/SidebarUtils.js @@ -90,6 +90,26 @@ Onyx.connect({ callback: (val) => (preferredLocale = val || CONST.LOCALES.DEFAULT), }); +let resolveSidebarIsReadyPromise; + +let sidebarIsReadyPromise = new Promise((resolve) => { + resolveSidebarIsReadyPromise = resolve; +}); + +function resetIsSidebarLoadedReadyPromise() { + sidebarIsReadyPromise = new Promise((resolve) => { + resolveSidebarIsReadyPromise = resolve; + }); +} + +function isSidebarLoadedReady() { + return sidebarIsReadyPromise; +} + +function setIsSidebarLoadedReady() { + resolveSidebarIsReadyPromise(); +} + /** * @param {String} reportIDFromRoute * @returns {String[]} An array of reportIDs sorted in the proper order @@ -349,4 +369,7 @@ function getOptionData(reportID) { export default { getOptionData, getOrderedReportIDs, + setIsSidebarLoadedReady, + isSidebarLoadedReady, + resetIsSidebarLoadedReadyPromise, }; diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index f459b7746ce8..1f7e9f00044f 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -23,6 +23,7 @@ import * as CollectionUtils from '../CollectionUtils'; import * as EmojiUtils from '../EmojiUtils'; import * as ErrorUtils from '../ErrorUtils'; import * as Welcome from './Welcome'; +import SidebarUtils from '../SidebarUtils'; let currentUserEmail; let currentUserAccountID; @@ -1638,7 +1639,7 @@ function openReportFromDeepLink(url, isAuthenticated) { // Navigate to the report after sign-in/sign-up. InteractionManager.runAfterInteractions(() => { - Navigation.isReportScreenReady().then(() => { + SidebarUtils.isSidebarLoadedReady().then(() => { if (reportID) { Navigation.navigate(ROUTES.getReportRoute(reportID)); } diff --git a/src/pages/home/ReportScreen.js b/src/pages/home/ReportScreen.js index 652ea5eb5d2c..c18116ce5635 100644 --- a/src/pages/home/ReportScreen.js +++ b/src/pages/home/ReportScreen.js @@ -149,7 +149,6 @@ class ReportScreen extends React.Component { this.fetchReportIfNeeded(); ComposerActions.setShouldShowComposeInput(true); - Navigation.setIsReportScreenIsReady(); } componentDidUpdate(prevProps) { @@ -168,10 +167,10 @@ class ReportScreen extends React.Component { } componentWillUnmount() { - if (this.unsubscribeVisibilityListener) { - this.unsubscribeVisibilityListener(); + if (!this.unsubscribeVisibilityListener) { + return; } - Navigation.resetIsReportScreenReadyPromise(); + this.unsubscribeVisibilityListener(); } /** diff --git a/src/pages/home/sidebar/SidebarLinks.js b/src/pages/home/sidebar/SidebarLinks.js index a072402a4ca3..9b502193d704 100644 --- a/src/pages/home/sidebar/SidebarLinks.js +++ b/src/pages/home/sidebar/SidebarLinks.js @@ -110,9 +110,14 @@ class SidebarLinks extends React.Component { componentDidMount() { App.setSidebarLoaded(); + SidebarUtils.setIsSidebarLoadedReady(); this.isSidebarLoaded = true; } + componentWillUnmount() { + SidebarUtils.resetIsSidebarLoadedReadyPromise(); + } + showSearchPage() { if (this.props.isCreateMenuOpen) { // Prevent opening Search page when click Search icon quickly after clicking FAB icon