Skip to content

Commit

Permalink
Merge pull request #42020 from Nodebrute/navigation
Browse files Browse the repository at this point in the history
Fix navigation to concierge after leaving the group
  • Loading branch information
Julesssss authored May 16, 2024
2 parents ac09bc5 + 6a0e24f commit 5bfa295
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
9 changes: 5 additions & 4 deletions src/libs/actions/Report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ import * as Environment from '@libs/Environment/Environment';
import * as ErrorUtils from '@libs/ErrorUtils';
import Log from '@libs/Log';
import * as LoginUtils from '@libs/LoginUtils';
import Navigation from '@libs/Navigation/Navigation';
import Navigation, {navigationRef} from '@libs/Navigation/Navigation';
import type {NetworkStatus} from '@libs/NetworkConnection';
import LocalNotification from '@libs/Notification/LocalNotification';
import * as PersonalDetailsUtils from '@libs/PersonalDetailsUtils';
Expand Down Expand Up @@ -2530,10 +2530,11 @@ function navigateToMostRecentReport(currentReport: OnyxEntry<Report>) {
const isChatThread = ReportUtils.isChatThread(currentReport);
if (lastAccessedReportID) {
const lastAccessedReportRoute = ROUTES.REPORT_WITH_ID.getRoute(lastAccessedReportID ?? '');
// We are using index 1 here because on index 0, we'll always have the bottomTabNavigator.
const isFirstRoute = navigationRef?.current?.getState()?.index === 1;
// If it is not a chat thread we should call Navigation.goBack to pop the current route first before navigating to last accessed report.
if (!isChatThread) {
// Fallback to the lastAccessedReportID route, if this is first route in the navigator
Navigation.goBack(lastAccessedReportRoute);
if (!isChatThread && !isFirstRoute) {
Navigation.goBack();
}
Navigation.navigate(lastAccessedReportRoute, CONST.NAVIGATION.TYPE.FORCED_UP);
} else {
Expand Down
7 changes: 6 additions & 1 deletion src/pages/home/ReportScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,6 @@ function ReportScreen({
const didReportClose = wasReportRemoved && prevReport.statusNum === CONST.REPORT.STATUS_NUM.OPEN && report.statusNum === CONST.REPORT.STATUS_NUM.CLOSED;
const isTopLevelPolicyRoomWithNoStatus = !report.statusNum && !prevReport.parentReportID && prevReport.chatType === CONST.REPORT.CHAT_TYPE.POLICY_ROOM;
const isClosedTopLevelPolicyRoom = wasReportRemoved && prevReport.statusNum === CONST.REPORT.STATUS_NUM.OPEN && isTopLevelPolicyRoomWithNoStatus;

// Navigate to the Concierge chat if the room was removed from another device (e.g. user leaving a room or removed from a room)
if (
// non-optimistic case
Expand All @@ -526,6 +525,10 @@ function ReportScreen({
isRemovalExpectedForReportType ||
isClosedTopLevelPolicyRoom
) {
// Early return if the report we're passing isn't in a focused state. We only want to navigate to Concierge if the user leaves the room from another device or gets removed from the room while the report is in a focused state.
if (!isFocused) {
return;
}
Navigation.dismissModal();
if (Navigation.getTopmostReportId() === prevOnyxReportID) {
Navigation.setShouldPopAllStateOnUP();
Expand All @@ -540,6 +543,7 @@ function ReportScreen({
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(prevReport.parentReportID));
return;
}

Report.navigateToConciergeChat();
return;
}
Expand Down Expand Up @@ -567,6 +571,7 @@ function ReportScreen({
prevReport.chatType,
prevReport,
reportIDFromRoute,
isFocused,
]);

useEffect(() => {
Expand Down

0 comments on commit 5bfa295

Please sign in to comment.