Skip to content

Commit 044ff04

Browse files
committed
prevent passing redundnt transaction/reportIDs for group exports
1 parent e06d7fd commit 044ff04

3 files changed

Lines changed: 20 additions & 13 deletions

File tree

src/components/Search/index.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,8 @@ function Search({
11021102
const originalItemTransaction =
11031103
searchResults?.data?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${itemTransaction?.comment?.originalTransactionID}`] ??
11041104
transactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${itemTransaction?.comment?.originalTransactionID}`];
1105-
return mapTransactionItemToSelectedEntry(transactionItem, itemTransaction, originalItemTransaction, email ?? '', accountID, outstandingReportsByPolicyID);
1105+
const [key, entry] = mapTransactionItemToSelectedEntry(transactionItem, itemTransaction, originalItemTransaction, email ?? '', accountID, outstandingReportsByPolicyID);
1106+
return [key, {...entry, groupKey: item.keyForList}];
11061107
}),
11071108
),
11081109
};
@@ -1412,7 +1413,8 @@ function Search({
14121413
.map((transactionItem) => {
14131414
const itemTransaction = transactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionItem.transactionID}`] as OnyxEntry<Transaction>;
14141415
const originalItemTransaction = transactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${itemTransaction?.comment?.originalTransactionID}`];
1415-
return mapTransactionItemToSelectedEntry(transactionItem, itemTransaction, originalItemTransaction, email ?? '', accountID, outstandingReportsByPolicyID);
1416+
const [key, entry] = mapTransactionItemToSelectedEntry(transactionItem, itemTransaction, originalItemTransaction, email ?? '', accountID, outstandingReportsByPolicyID);
1417+
return [key, {...entry, groupKey: item.keyForList}] as [string, SelectedTransactionInfo];
14161418
});
14171419
});
14181420
updatedTransactions = Object.fromEntries(allSelections);

src/components/Search/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ type SelectedTransactionInfo = {
9090
reportAction?: ReportAction;
9191

9292
report?: Report;
93+
94+
/** The group key this transaction belongs to when in a grouped view */
95+
groupKey?: string;
9396
};
9497

9598
/** Model of selected transactions */

src/hooks/useSearchBulkActions.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,11 @@ function addSelectedGroupsFilter(queryJSON: SearchQueryJSON, selectedTransaction
130130
}
131131

132132
const groupKeys = new Set<string>();
133-
for (const key of Object.keys(selectedTransactions)) {
133+
for (const [key, value] of Object.entries(selectedTransactions)) {
134134
if (key.startsWith(CONST.SEARCH.GROUP_PREFIX)) {
135135
groupKeys.add(key);
136+
} else if (value.groupKey) {
137+
groupKeys.add(value.groupKey);
136138
}
137139
}
138140

@@ -520,13 +522,13 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
520522
policyID,
521523
});
522524
} else {
523-
const filteredQuery = queryJSON?.groupBy ? serializeQueryJSONForBackend(addSelectedGroupsFilter(queryJSON, selectedTransactions, currentSearchResults?.data)) : '{}';
525+
const isGroupExport = !!queryJSON?.groupBy;
524526
queueExportSearchWithTemplate({
525527
templateName,
526528
templateType,
527-
jsonQuery: filteredQuery,
528-
reportIDList: selectedTransactionReportIDs,
529-
transactionIDList: selectedTransactionsKeys.filter((key) => !key.startsWith(CONST.SEARCH.GROUP_PREFIX)),
529+
jsonQuery: isGroupExport ? serializeQueryJSONForBackend(addSelectedGroupsFilter(queryJSON, selectedTransactions, currentSearchResults?.data)) : '{}',
530+
reportIDList: isGroupExport ? [] : selectedTransactionReportIDs,
531+
transactionIDList: isGroupExport ? [] : selectedTransactionsKeys,
530532
policyID,
531533
});
532534
}
@@ -605,16 +607,16 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
605607
return;
606608
}
607609

608-
const transactionIDList = selectedTransactionsKeys.filter((key) => !key.startsWith(CONST.SEARCH.GROUP_PREFIX));
609-
const reportIDList = selectedReports.length > 0 ? selectedReportIDs : selectedTransactionReportIDs;
610-
const exportQuery = queryJSON?.groupBy ? addSelectedGroupsFilter(queryJSON, selectedTransactions, currentSearchResults?.data) : queryJSON;
610+
const isGroupExport = !!queryJSON?.groupBy;
611611
let didFail = false;
612612
await exportSearchItemsToCSV(
613613
{
614614
query: status,
615-
jsonQuery: exportQuery ? serializeQueryJSONForBackend(exportQuery) : JSON.stringify(exportQuery),
616-
reportIDList,
617-
transactionIDList,
615+
jsonQuery: isGroupExport
616+
? serializeQueryJSONForBackend(addSelectedGroupsFilter(queryJSON, selectedTransactions, currentSearchResults?.data))
617+
: queryJSON ? serializeQueryJSONForBackend(queryJSON) : JSON.stringify(queryJSON),
618+
reportIDList: isGroupExport ? [] : (selectedReports.length > 0 ? selectedReportIDs : selectedTransactionReportIDs),
619+
transactionIDList: isGroupExport ? [] : selectedTransactionsKeys,
618620
},
619621
() => {
620622
didFail = true;

0 commit comments

Comments
 (0)