Skip to content

Commit 517ca14

Browse files
Merge pull request Expensify#85576 from nyomanjyotisa/issue-85537
Fix: Expense auto enters selection mode after clicking Move to report
2 parents e9cb70c + 36016bf commit 517ca14

5 files changed

Lines changed: 28 additions & 15 deletions

File tree

src/ROUTES.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,13 +1160,15 @@ const ROUTES = {
11601160
},
11611161
MONEY_REQUEST_EDIT_REPORT: {
11621162
route: ':action/:iouType/report/:reportID/edit',
1163-
getRoute: (action: IOUAction, iouType: IOUType, reportID?: string, shouldTurnOffSelectionMode?: boolean, backTo = '') => {
1163+
getRoute: (action: IOUAction, iouType: IOUType, reportID?: string, shouldTurnOffSelectionMode?: boolean, backTo = '', transactionID?: string) => {
11641164
if (!reportID) {
11651165
Log.warn('Invalid reportID while building route MONEY_REQUEST_EDIT_REPORT');
11661166
}
1167+
const queryParams = [shouldTurnOffSelectionMode ? 'shouldTurnOffSelectionMode=true' : '', transactionID ? `transactionID=${transactionID}` : ''].filter(Boolean).join('&');
1168+
const queryString = queryParams ? `?${queryParams}` : '';
11671169

11681170
// eslint-disable-next-line no-restricted-syntax -- Legacy route generation
1169-
return getUrlWithBackToParam(`${action as string}/${iouType as string}/report/${reportID}/edit${shouldTurnOffSelectionMode ? '?shouldTurnOffSelectionMode=true' : ''}`, backTo);
1171+
return getUrlWithBackToParam(`${action as string}/${iouType as string}/report/${reportID}/edit${queryString}`, backTo);
11701172
},
11711173
},
11721174
SET_DEFAULT_WORKSPACE: {

src/components/MoneyReportHeader.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ function MoneyReportHeader({
531531
> | null>(null);
532532

533533
const {selectedTransactionIDs, currentSearchQueryJSON, currentSearchKey, currentSearchHash, currentSearchResults} = useSearchStateContext();
534-
const {removeTransaction, clearSelectedTransactions, setSelectedTransactions} = useSearchActionsContext();
534+
const {removeTransaction, clearSelectedTransactions} = useSearchActionsContext();
535535
const shouldCalculateTotals = useSearchShouldCalculateTotals(currentSearchKey, currentSearchQueryJSON?.hash, true);
536536

537537
const [shouldFailAllRequests] = useOnyx(ONYXKEYS.NETWORK, {selector: shouldFailAllRequestsSelector});
@@ -1936,8 +1936,16 @@ function MoneyReportHeader({
19361936
if (!transactionToMove?.transactionID) {
19371937
return;
19381938
}
1939-
setSelectedTransactions([transactionToMove.transactionID]);
1940-
Navigation.navigate(ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, moneyRequestReport.reportID, true, Navigation.getActiveRoute()));
1939+
Navigation.navigate(
1940+
ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(
1941+
CONST.IOU.ACTION.EDIT,
1942+
CONST.IOU.TYPE.SUBMIT,
1943+
moneyRequestReport.reportID,
1944+
true,
1945+
Navigation.getActiveRoute(),
1946+
transactionToMove.transactionID,
1947+
),
1948+
);
19411949
},
19421950
},
19431951
[CONST.REPORT.SECONDARY_ACTIONS.CHANGE_APPROVER]: {

src/components/MoneyRequestHeader.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
170170
const isDuplicate = isDuplicateTransactionUtils(transaction, email ?? '', accountID, report, policy, transactionViolations);
171171
const reportID = report?.reportID;
172172
const {currentSearchHash} = useSearchStateContext();
173-
const {removeTransaction, setSelectedTransactions} = useSearchActionsContext();
173+
const {removeTransaction} = useSearchActionsContext();
174174
const [outstandingReportsByPolicyID] = useOnyx(ONYXKEYS.DERIVED.OUTSTANDING_REPORTS_BY_POLICY_ID);
175175
const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction);
176176
const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION);
@@ -678,8 +678,9 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
678678
);
679679
return;
680680
}
681-
setSelectedTransactions([transaction.transactionID]);
682-
Navigation.navigate(ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, iouType, parentReport.reportID, true, Navigation.getActiveRoute()));
681+
Navigation.navigate(
682+
ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, iouType, parentReport.reportID, true, Navigation.getActiveRoute(), transaction.transactionID),
683+
);
683684
},
684685
},
685686
};

src/libs/Navigation/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1783,6 +1783,7 @@ type MoneyRequestNavigatorParamList = {
17831783
// eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
17841784
backTo: Routes;
17851785
shouldTurnOffSelectionMode?: boolean;
1786+
transactionID?: string;
17861787
};
17871788
[SCREENS.MONEY_REQUEST.STEP_REPORT]: {
17881789
action: IOUAction;

src/pages/iou/request/step/IOURequestEditReport.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ type TransactionGroupListItem = ListItem & {
3333
type IOURequestEditReportProps = WithWritableReportOrNotFoundProps<typeof SCREENS.MONEY_REQUEST.EDIT_REPORT>;
3434

3535
function IOURequestEditReport({route}: IOURequestEditReportProps) {
36-
const {backTo, reportID, action, shouldTurnOffSelectionMode} = route.params;
36+
const {backTo, reportID, action, shouldTurnOffSelectionMode, transactionID: transactionIDFromParams} = route.params;
3737
const {translate, toLocaleDigit} = useLocalize();
3838
const {selectedTransactionIDs} = useSearchStateContext();
39+
const transactionIDs = transactionIDFromParams ? [transactionIDFromParams] : selectedTransactionIDs;
3940
const {clearSelectedTransactions} = useSearchActionsContext();
4041
const [allReports] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}`);
4142
const [selectedReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`);
@@ -54,7 +55,7 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
5455
);
5556
const selectedReportPolicy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${selectedReport?.policyID}`];
5657

57-
const hasPerDiemTransactions = useHasPerDiemTransactions(selectedTransactionIDs);
58+
const hasPerDiemTransactions = useHasPerDiemTransactions(transactionIDs);
5859

5960
const {policyForMovingExpensesID, shouldSelectPolicy} = usePolicyForMovingExpenses(hasPerDiemTransactions, undefined, selectedReport?.policyID);
6061
const [transactionViolations] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS);
@@ -63,7 +64,7 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
6364
const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION);
6465
const [betas] = useOnyx(ONYXKEYS.BETAS);
6566
const selectReport = (item: TransactionGroupListItem, report?: OnyxEntry<Report>) => {
66-
if (selectedTransactionIDs.length === 0 || item.value === reportID) {
67+
if (transactionIDs.length === 0 || item.value === reportID) {
6768
Navigation.dismissToSuperWideRHP();
6869
return;
6970
}
@@ -72,7 +73,7 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
7273

7374
setNavigationActionToMicrotaskQueue(() => {
7475
changeTransactionsReport({
75-
transactionIDs: selectedTransactionIDs,
76+
transactionIDs,
7677
isASAPSubmitBetaEnabled,
7778
accountID: session?.accountID ?? CONST.DEFAULT_NUMBER_ID,
7879
email: session?.email ?? '',
@@ -92,11 +93,11 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
9293
};
9394

9495
const removeFromReport = () => {
95-
if (!selectedReport || selectedTransactionIDs.length === 0) {
96+
if (!selectedReport || transactionIDs.length === 0) {
9697
return;
9798
}
9899
changeTransactionsReport({
99-
transactionIDs: selectedTransactionIDs,
100+
transactionIDs,
100101
isASAPSubmitBetaEnabled,
101102
accountID: session?.accountID ?? CONST.DEFAULT_NUMBER_ID,
102103
email: session?.email ?? '',
@@ -152,7 +153,7 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
152153
<IOURequestEditReportCommon
153154
backTo={backTo}
154155
selectedReportID={reportID}
155-
transactionIDs={selectedTransactionIDs}
156+
transactionIDs={transactionIDs}
156157
selectReport={selectReport}
157158
removeFromReport={removeFromReport}
158159
isEditing={action === CONST.IOU.ACTION.EDIT}

0 commit comments

Comments
 (0)