diff --git a/src/components/PromotedActionsBar.tsx b/src/components/PromotedActionsBar.tsx index abcd2df95e5c..b0309d702f9a 100644 --- a/src/components/PromotedActionsBar.tsx +++ b/src/components/PromotedActionsBar.tsx @@ -29,7 +29,7 @@ type BasePromotedActions = typeof CONST.PROMOTED_ACTIONS.PIN | typeof CONST.PROM type PromotedActionsType = Record PromotedAction> & { message: (params: {reportID?: string; accountID?: number; login?: string}) => PromotedAction; } & { - hold: (params: {isTextHold: boolean; reportAction: ReportAction | undefined}) => PromotedAction; + hold: (params: {isTextHold: boolean; reportAction: ReportAction | undefined; reportID?: string}) => PromotedAction; }; const PromotedActions = { @@ -70,7 +70,7 @@ const PromotedActions = { } }, }), - hold: ({isTextHold, reportAction}) => ({ + hold: ({isTextHold, reportAction, reportID}) => ({ key: CONST.PROMOTED_ACTIONS.HOLD, icon: Expensicons.Stopwatch, text: Localize.translateLocal(`iou.${isTextHold ? 'hold' : 'unhold'}`), @@ -78,14 +78,15 @@ const PromotedActions = { if (!isTextHold) { Navigation.goBack(); } + const targetedReportID = reportID ?? reportAction?.childReportID ?? ''; const topmostCentralPaneRoute = getTopmostCentralPaneRoute(navigationRef.getRootState() as State); if (topmostCentralPaneRoute?.name !== SCREENS.SEARCH.CENTRAL_PANE && isTextHold) { - ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.REPORT_WITH_ID.getRoute(reportAction?.childReportID ?? '')); + ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.REPORT_WITH_ID.getRoute(targetedReportID)); return; } - ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.SEARCH_REPORT.getRoute(reportAction?.childReportID ?? '')); + ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.SEARCH_REPORT.getRoute(targetedReportID)); }, }), } satisfies PromotedActionsType; @@ -131,4 +132,4 @@ PromotedActionsBar.displayName = 'PromotedActionsBar'; export default PromotedActionsBar; export {PromotedActions}; -export type {PromotedActionsBarProps, PromotedAction}; +export type {PromotedAction, PromotedActionsBarProps}; diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx index 99b4427b45e3..0836190ccf47 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -540,7 +540,13 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD } if (isExpenseReport && shouldShowHoldAction) { - result.push(PromotedActions.hold({isTextHold: canHoldUnholdReportAction.canHoldRequest, reportAction: moneyRequestAction})); + result.push( + PromotedActions.hold({ + isTextHold: canHoldUnholdReportAction.canHoldRequest, + reportAction: moneyRequestAction, + reportID: transactionThreadReportID ? report.reportID : moneyRequestAction?.childReportID ?? '-1', + }), + ); } if (report) { @@ -550,7 +556,7 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD result.push(PromotedActions.share(report)); return result; - }, [report, moneyRequestAction, canJoin, isExpenseReport, shouldShowHoldAction, canHoldUnholdReportAction.canHoldRequest]); + }, [report, moneyRequestAction, canJoin, isExpenseReport, shouldShowHoldAction, canHoldUnholdReportAction.canHoldRequest, transactionThreadReportID]); const nameSectionExpenseIOU = (