From f33ab1e954b98f7b163d96b9e634f3a0d5146058 Mon Sep 17 00:00:00 2001 From: Krishna Gupta Date: Tue, 25 Jun 2024 04:33:37 +0530 Subject: [PATCH 1/4] fix: Search - Transaction RHP dismisses when holding/unholding expense from report details page. Signed-off-by: Krishna Gupta --- src/components/PromotedActionsBar.tsx | 22 +++++++++++++++++++--- src/libs/ReportUtils.ts | 5 +++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/components/PromotedActionsBar.tsx b/src/components/PromotedActionsBar.tsx index b3bfe34df542..52eac53155fd 100644 --- a/src/components/PromotedActionsBar.tsx +++ b/src/components/PromotedActionsBar.tsx @@ -5,11 +5,15 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as HeaderUtils from '@libs/HeaderUtils'; import * as Localize from '@libs/Localize'; -import Navigation from '@libs/Navigation/Navigation'; +import getTopmostCentralPaneRoute from '@libs/Navigation/getTopmostCentralPaneRoute'; +import Navigation, {navigationRef} from '@libs/Navigation/Navigation'; +import type {CentralPaneNavigatorParamList, RootStackParamList, State} from '@libs/Navigation/types'; import * as ReportUtils from '@libs/ReportUtils'; import * as ReportActions from '@userActions/Report'; import * as Session from '@userActions/Session'; import CONST from '@src/CONST'; +import ROUTES from '@src/ROUTES'; +import SCREENS from '@src/SCREENS'; import type {ReportAction} from '@src/types/onyx'; import type OnyxReport from '@src/types/onyx/Report'; import Button from './Button'; @@ -66,8 +70,20 @@ const PromotedActions = { icon: Expensicons.Stopwatch, text: Localize.translateLocal(`iou.${isTextHold ? 'hold' : 'unhold'}`), onSelected: () => { - Navigation.dismissModal(); - ReportUtils.changeMoneyRequestHoldStatus(reportAction); + if (!isTextHold) { + Navigation.goBack(); + } + const topmostCentralPaneRoute = getTopmostCentralPaneRoute(navigationRef.getRootState() as State); + const isReportInRHP = topmostCentralPaneRoute?.name === SCREENS.SEARCH.CENTRAL_PANE; + + if (!isReportInRHP && isTextHold) { + Navigation.dismissModal(); + ReportUtils.changeMoneyRequestHoldStatus(reportAction); + return; + } + + const currentQuery = topmostCentralPaneRoute?.params as CentralPaneNavigatorParamList['Search_Central_Pane']; + ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.SEARCH_REPORT.getRoute(currentQuery?.query ?? CONST.SEARCH.TAB.ALL, reportAction?.childReportID ?? '')); }, }), } satisfies PromotedActionsType; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 211d505c2c7d..eeabc8db42fa 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -2786,7 +2786,7 @@ function canHoldUnholdReportAction(reportAction: OnyxInputOrEntry) return {canHoldRequest, canUnholdRequest}; } -const changeMoneyRequestHoldStatus = (reportAction: OnyxEntry): void => { +const changeMoneyRequestHoldStatus = (reportAction: OnyxEntry, backTo?: string): void => { if (!ReportActionsUtils.isMoneyRequestAction(reportAction)) { return; } @@ -2806,7 +2806,8 @@ const changeMoneyRequestHoldStatus = (reportAction: OnyxEntry): vo IOU.unholdRequest(transactionID, reportAction.childReportID ?? ''); } else { const activeRoute = encodeURIComponent(Navigation.getActiveRouteWithoutParams()); - Navigation.navigate(ROUTES.MONEY_REQUEST_HOLD_REASON.getRoute(policy?.type ?? CONST.POLICY.TYPE.PERSONAL, transactionID, reportAction.childReportID ?? '', activeRoute)); + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + Navigation.navigate(ROUTES.MONEY_REQUEST_HOLD_REASON.getRoute(policy?.type ?? CONST.POLICY.TYPE.PERSONAL, transactionID, reportAction.childReportID ?? '', backTo || activeRoute)); } }; From fdca149e3dc537be8cc90b5c3ef74d9b32d5160c Mon Sep 17 00:00:00 2001 From: Krishna Gupta Date: Tue, 25 Jun 2024 08:20:21 +0530 Subject: [PATCH 2/4] minor update. Signed-off-by: Krishna Gupta --- src/components/PromotedActionsBar.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/PromotedActionsBar.tsx b/src/components/PromotedActionsBar.tsx index 52eac53155fd..d6c553b24328 100644 --- a/src/components/PromotedActionsBar.tsx +++ b/src/components/PromotedActionsBar.tsx @@ -74,9 +74,8 @@ const PromotedActions = { Navigation.goBack(); } const topmostCentralPaneRoute = getTopmostCentralPaneRoute(navigationRef.getRootState() as State); - const isReportInRHP = topmostCentralPaneRoute?.name === SCREENS.SEARCH.CENTRAL_PANE; - if (!isReportInRHP && isTextHold) { + if (topmostCentralPaneRoute?.name !== SCREENS.SEARCH.CENTRAL_PANE && isTextHold) { Navigation.dismissModal(); ReportUtils.changeMoneyRequestHoldStatus(reportAction); return; From eaa4a9dd10260a2eb4fb5b0996f106517a5c4e63 Mon Sep 17 00:00:00 2001 From: Krishna Gupta Date: Tue, 25 Jun 2024 08:48:49 +0530 Subject: [PATCH 3/4] fix additional bug. Signed-off-by: Krishna Gupta --- src/components/PromotedActionsBar.tsx | 3 +-- src/pages/iou/HoldReasonPage.tsx | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/PromotedActionsBar.tsx b/src/components/PromotedActionsBar.tsx index d6c553b24328..98ab1eaf5539 100644 --- a/src/components/PromotedActionsBar.tsx +++ b/src/components/PromotedActionsBar.tsx @@ -76,8 +76,7 @@ const PromotedActions = { const topmostCentralPaneRoute = getTopmostCentralPaneRoute(navigationRef.getRootState() as State); if (topmostCentralPaneRoute?.name !== SCREENS.SEARCH.CENTRAL_PANE && isTextHold) { - Navigation.dismissModal(); - ReportUtils.changeMoneyRequestHoldStatus(reportAction); + ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.REPORT_WITH_ID.getRoute(reportAction?.childReportID ?? '')); return; } diff --git a/src/pages/iou/HoldReasonPage.tsx b/src/pages/iou/HoldReasonPage.tsx index 1cfc65d987d0..9a474e7f1661 100644 --- a/src/pages/iou/HoldReasonPage.tsx +++ b/src/pages/iou/HoldReasonPage.tsx @@ -103,7 +103,7 @@ function HoldReasonPage({route}: HoldReasonPageProps) { > Navigation.goBack()} /> Date: Tue, 25 Jun 2024 09:08:26 +0530 Subject: [PATCH 4/4] minor fix. Signed-off-by: Krishna Gupta --- src/pages/iou/HoldReasonPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/iou/HoldReasonPage.tsx b/src/pages/iou/HoldReasonPage.tsx index 9a474e7f1661..2fc789f77c6c 100644 --- a/src/pages/iou/HoldReasonPage.tsx +++ b/src/pages/iou/HoldReasonPage.tsx @@ -103,7 +103,7 @@ function HoldReasonPage({route}: HoldReasonPageProps) { > Navigation.goBack()} + onBackButtonPress={() => Navigation.goBack(backTo)} />