Skip to content

Commit 04155b2

Browse files
committed
Test signed commit
1 parent f707703 commit 04155b2

2 files changed

Lines changed: 31 additions & 5 deletions

File tree

src/libs/Navigation/Navigation.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,10 @@ function getReportRouteByID(reportID?: string, routes: NavigationRoute[] = navig
561561
const dismissModal = (ref = navigationRef) => {
562562
isNavigationReady().then(() => {
563563
ref.dispatch({type: CONST.NAVIGATION.ACTION_TYPE.DISMISS_MODAL});
564+
// Let React Navigation finish modal transition
565+
InteractionManager.runAfterInteractions(() => {
566+
fireModalDismissed();
567+
});
564568
});
565569
};
566570

@@ -652,6 +656,20 @@ function isOnboardingFlow() {
652656
return isOnboardingFlowName(currentFocusedRoute?.name);
653657
}
654658

659+
const modalDismissedListeners: Array<() => void> = [];
660+
661+
function onModalDismissedOnce(callback: () => void) {
662+
modalDismissedListeners.push(callback);
663+
}
664+
665+
// Wrap modal dismissal so listeners get called
666+
function fireModalDismissed() {
667+
while (modalDismissedListeners.length) {
668+
const cb = modalDismissedListeners.pop();
669+
cb?.();
670+
}
671+
}
672+
655673
export default {
656674
setShouldPopToSidebar,
657675
getShouldPopToSidebar,
@@ -685,6 +703,8 @@ export default {
685703
replaceWithSplitNavigator,
686704
isTopmostRouteModalScreen,
687705
isOnboardingFlow,
706+
onModalDismissedOnce,
707+
fireModalDismissed,
688708
};
689709

690710
export {navigationRef};

src/libs/actions/Report.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,14 +1364,20 @@ function navigateToAndOpenReport(
13641364
const report = isEmptyObject(chat) ? newChat : chat;
13651365

13661366
if (shouldDismissModal) {
1367-
if (getIsNarrowLayout() && report?.reportID) {
1368-
Navigation.dismissModalWithReport({reportID: report.reportID});
1369-
return;
1370-
}
1367+
Navigation.onModalDismissedOnce(() => {
1368+
Navigation.onModalDismissedOnce(() => {
1369+
if (!report?.reportID) {
1370+
return;
1371+
}
1372+
1373+
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(report.reportID));
1374+
});
1375+
});
13711376

13721377
Navigation.dismissModal();
1378+
} else if (report?.reportID) {
1379+
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(report.reportID));
13731380
}
1374-
13751381
// In some cases when RHP modal gets hidden and then we navigate to report Composer focus breaks, wrapping navigation in setTimeout fixes this
13761382
setTimeout(() => {
13771383
Navigation.isNavigationReady().then(() => Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(report?.reportID)));

0 commit comments

Comments
 (0)