From d135c82c38419f8688f52d2e7cbee5ddd470148f Mon Sep 17 00:00:00 2001 From: dominictb Date: Fri, 26 Jul 2024 16:00:36 +0700 Subject: [PATCH 1/2] fix: set backTo params when hold --- src/components/PromotedActionsBar.tsx | 11 +++++------ src/pages/ReportDetailsPage.tsx | 10 ++++++++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/PromotedActionsBar.tsx b/src/components/PromotedActionsBar.tsx index abcd2df95e5c..9ff30a991d49 100644 --- a/src/components/PromotedActionsBar.tsx +++ b/src/components/PromotedActionsBar.tsx @@ -12,7 +12,6 @@ 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'; @@ -29,7 +28,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; backTo?: string}) => PromotedAction; }; const PromotedActions = { @@ -70,7 +69,7 @@ const PromotedActions = { } }, }), - hold: ({isTextHold, reportAction}) => ({ + hold: ({isTextHold, reportAction, backTo}) => ({ key: CONST.PROMOTED_ACTIONS.HOLD, icon: Expensicons.Stopwatch, text: Localize.translateLocal(`iou.${isTextHold ? 'hold' : 'unhold'}`), @@ -81,11 +80,11 @@ const PromotedActions = { 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, backTo); return; } - ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.SEARCH_REPORT.getRoute(reportAction?.childReportID ?? '')); + ReportUtils.changeMoneyRequestHoldStatus(reportAction, backTo); }, }), } satisfies PromotedActionsType; @@ -131,4 +130,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..71d16298a688 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, + backTo: ROUTES.REPORT_WITH_ID.getRoute(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 = ( From 01a170a7255060c8075e2af938bc21b6dd5492a5 Mon Sep 17 00:00:00 2001 From: dominictb Date: Tue, 30 Jul 2024 10:25:01 +0700 Subject: [PATCH 2/2] fix: update hold action with correct report ID --- src/components/PromotedActionsBar.tsx | 10 ++++++---- src/pages/ReportDetailsPage.tsx | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/PromotedActionsBar.tsx b/src/components/PromotedActionsBar.tsx index 9ff30a991d49..b0309d702f9a 100644 --- a/src/components/PromotedActionsBar.tsx +++ b/src/components/PromotedActionsBar.tsx @@ -12,6 +12,7 @@ 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'; @@ -28,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; backTo?: string}) => PromotedAction; + hold: (params: {isTextHold: boolean; reportAction: ReportAction | undefined; reportID?: string}) => PromotedAction; }; const PromotedActions = { @@ -69,7 +70,7 @@ const PromotedActions = { } }, }), - hold: ({isTextHold, reportAction, backTo}) => ({ + hold: ({isTextHold, reportAction, reportID}) => ({ key: CONST.PROMOTED_ACTIONS.HOLD, icon: Expensicons.Stopwatch, text: Localize.translateLocal(`iou.${isTextHold ? 'hold' : 'unhold'}`), @@ -77,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, backTo); + ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.REPORT_WITH_ID.getRoute(targetedReportID)); return; } - ReportUtils.changeMoneyRequestHoldStatus(reportAction, backTo); + ReportUtils.changeMoneyRequestHoldStatus(reportAction, ROUTES.SEARCH_REPORT.getRoute(targetedReportID)); }, }), } satisfies PromotedActionsType; diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx index 71d16298a688..0836190ccf47 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -544,7 +544,7 @@ function ReportDetailsPage({policies, report, session, personalDetails}: ReportD PromotedActions.hold({ isTextHold: canHoldUnholdReportAction.canHoldRequest, reportAction: moneyRequestAction, - backTo: ROUTES.REPORT_WITH_ID.getRoute(transactionThreadReportID ? report.reportID : moneyRequestAction?.childReportID ?? '-1'), + reportID: transactionThreadReportID ? report.reportID : moneyRequestAction?.childReportID ?? '-1', }), ); }