Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1160,13 +1160,15 @@ const ROUTES = {
},
MONEY_REQUEST_EDIT_REPORT: {
route: ':action/:iouType/report/:reportID/edit',
getRoute: (action: IOUAction, iouType: IOUType, reportID?: string, shouldTurnOffSelectionMode?: boolean, backTo = '') => {
getRoute: (action: IOUAction, iouType: IOUType, reportID?: string, shouldTurnOffSelectionMode?: boolean, backTo = '', transactionID?: string) => {
if (!reportID) {
Log.warn('Invalid reportID while building route MONEY_REQUEST_EDIT_REPORT');
}
const queryParams = [shouldTurnOffSelectionMode ? 'shouldTurnOffSelectionMode=true' : '', transactionID ? `transactionID=${transactionID}` : ''].filter(Boolean).join('&');
const queryString = queryParams ? `?${queryParams}` : '';

// eslint-disable-next-line no-restricted-syntax -- Legacy route generation
return getUrlWithBackToParam(`${action as string}/${iouType as string}/report/${reportID}/edit${shouldTurnOffSelectionMode ? '?shouldTurnOffSelectionMode=true' : ''}`, backTo);
return getUrlWithBackToParam(`${action as string}/${iouType as string}/report/${reportID}/edit${queryString}`, backTo);
},
},
SET_DEFAULT_WORKSPACE: {
Expand Down
14 changes: 11 additions & 3 deletions src/components/MoneyReportHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ function MoneyReportHeader({
> | null>(null);

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

const [shouldFailAllRequests] = useOnyx(ONYXKEYS.NETWORK, {selector: shouldFailAllRequestsSelector});
Expand Down Expand Up @@ -1936,8 +1936,16 @@ function MoneyReportHeader({
if (!transactionToMove?.transactionID) {
return;
}
setSelectedTransactions([transactionToMove.transactionID]);
Navigation.navigate(ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, moneyRequestReport.reportID, true, Navigation.getActiveRoute()));
Navigation.navigate(
ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(
CONST.IOU.ACTION.EDIT,
CONST.IOU.TYPE.SUBMIT,
moneyRequestReport.reportID,
true,
Navigation.getActiveRoute(),
transactionToMove.transactionID,
),
);
},
},
[CONST.REPORT.SECONDARY_ACTIONS.CHANGE_APPROVER]: {
Expand Down
7 changes: 4 additions & 3 deletions src/components/MoneyRequestHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
const isDuplicate = isDuplicateTransactionUtils(transaction, email ?? '', accountID, report, policy, transactionViolations);
const reportID = report?.reportID;
const {currentSearchHash} = useSearchStateContext();
const {removeTransaction, setSelectedTransactions} = useSearchActionsContext();
const {removeTransaction} = useSearchActionsContext();
const [outstandingReportsByPolicyID] = useOnyx(ONYXKEYS.DERIVED.OUTSTANDING_REPORTS_BY_POLICY_ID);
const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction);
const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION);
Expand Down Expand Up @@ -678,8 +678,9 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
);
return;
}
setSelectedTransactions([transaction.transactionID]);
Navigation.navigate(ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, iouType, parentReport.reportID, true, Navigation.getActiveRoute()));
Navigation.navigate(
ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, iouType, parentReport.reportID, true, Navigation.getActiveRoute(), transaction.transactionID),
);
},
},
};
Expand Down
1 change: 1 addition & 0 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1783,6 +1783,7 @@ type MoneyRequestNavigatorParamList = {
// 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
backTo: Routes;
shouldTurnOffSelectionMode?: boolean;
transactionID?: string;
};
[SCREENS.MONEY_REQUEST.STEP_REPORT]: {
action: IOUAction;
Expand Down
15 changes: 8 additions & 7 deletions src/pages/iou/request/step/IOURequestEditReport.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ type TransactionGroupListItem = ListItem & {
type IOURequestEditReportProps = WithWritableReportOrNotFoundProps<typeof SCREENS.MONEY_REQUEST.EDIT_REPORT>;

function IOURequestEditReport({route}: IOURequestEditReportProps) {
const {backTo, reportID, action, shouldTurnOffSelectionMode} = route.params;
const {backTo, reportID, action, shouldTurnOffSelectionMode, transactionID: transactionIDFromParams} = route.params;
const {translate, toLocaleDigit} = useLocalize();
const {selectedTransactionIDs} = useSearchStateContext();
const transactionIDs = transactionIDFromParams ? [transactionIDFromParams] : selectedTransactionIDs;
const {clearSelectedTransactions} = useSearchActionsContext();
const [allReports] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}`);
const [selectedReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`);
Expand All @@ -54,7 +55,7 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
);
const selectedReportPolicy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${selectedReport?.policyID}`];

const hasPerDiemTransactions = useHasPerDiemTransactions(selectedTransactionIDs);
const hasPerDiemTransactions = useHasPerDiemTransactions(transactionIDs);

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

setNavigationActionToMicrotaskQueue(() => {
changeTransactionsReport({
transactionIDs: selectedTransactionIDs,
transactionIDs,
isASAPSubmitBetaEnabled,
accountID: session?.accountID ?? CONST.DEFAULT_NUMBER_ID,
email: session?.email ?? '',
Expand All @@ -92,11 +93,11 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
};

const removeFromReport = () => {
if (!selectedReport || selectedTransactionIDs.length === 0) {
if (!selectedReport || transactionIDs.length === 0) {
return;
}
changeTransactionsReport({
transactionIDs: selectedTransactionIDs,
transactionIDs,
isASAPSubmitBetaEnabled,
accountID: session?.accountID ?? CONST.DEFAULT_NUMBER_ID,
email: session?.email ?? '',
Expand Down Expand Up @@ -152,7 +153,7 @@ function IOURequestEditReport({route}: IOURequestEditReportProps) {
<IOURequestEditReportCommon
backTo={backTo}
selectedReportID={reportID}
transactionIDs={selectedTransactionIDs}
transactionIDs={transactionIDs}
selectReport={selectReport}
removeFromReport={removeFromReport}
isEditing={action === CONST.IOU.ACTION.EDIT}
Expand Down
Loading