Skip to content

Commit b2b6e2d

Browse files
authored
Merge pull request Expensify#52168 from margelo/perf/cleanup-optionslistutils
perf: cleanup option list
2 parents 4cc54ab + 1465c8a commit b2b6e2d

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/libs/OptionsListUtils.ts

+19-12
Original file line numberDiff line numberDiff line change
@@ -2187,6 +2187,15 @@ function getPersonalDetailSearchTerms(item: Partial<ReportUtils.OptionData>) {
21872187
function getCurrentUserSearchTerms(item: ReportUtils.OptionData) {
21882188
return [item.text ?? '', item.login ?? '', item.login?.replace(CONST.EMAIL_SEARCH_REGEX, '') ?? ''];
21892189
}
2190+
2191+
/**
2192+
* Remove the personal details for the DMs that are already in the recent reports so that we don't show duplicates.
2193+
*/
2194+
function filteredPersonalDetailsOfRecentReports(recentReports: ReportUtils.OptionData[], personalDetails: ReportUtils.OptionData[]) {
2195+
const excludedLogins = new Set(recentReports.map((report) => report.login));
2196+
return personalDetails.filter((personalDetail) => !excludedLogins.has(personalDetail.login));
2197+
}
2198+
21902199
/**
21912200
* Filters options based on the search input value
21922201
*/
@@ -2200,11 +2209,6 @@ function filterOptions(options: Options, searchInputValue: string, config?: Filt
22002209
preferPolicyExpenseChat = false,
22012210
preferRecentExpenseReports = false,
22022211
} = config ?? {};
2203-
// Remove the personal details for the DMs that are already in the recent reports so that we don't show duplicates
2204-
function filteredPersonalDetailsOfRecentReports(recentReports: ReportUtils.OptionData[], personalDetails: ReportUtils.OptionData[]) {
2205-
const excludedLogins = new Set(recentReports.map((report) => report.login));
2206-
return personalDetails.filter((personalDetail) => !excludedLogins.has(personalDetail.login));
2207-
}
22082212
if (searchInputValue.trim() === '' && maxRecentReportsToShow > 0) {
22092213
const recentReports = options.recentReports.slice(0, maxRecentReportsToShow);
22102214
const personalDetails = filteredPersonalDetailsOfRecentReports(recentReports, options.personalDetails);
@@ -2264,13 +2268,15 @@ function filterOptions(options: Options, searchInputValue: string, config?: Filt
22642268
};
22652269
}, options);
22662270

2267-
let {recentReports, personalDetails} = matchResults;
2271+
const {recentReports, personalDetails} = matchResults;
2272+
2273+
const personalDetailsWithoutDMs = filteredPersonalDetailsOfRecentReports(recentReports, personalDetails);
22682274

2275+
let filteredPersonalDetails: ReportUtils.OptionData[] = personalDetailsWithoutDMs;
2276+
let filteredRecentReports: ReportUtils.OptionData[] = recentReports;
22692277
if (sortByReportTypeInSearch) {
2270-
personalDetails = filteredPersonalDetailsOfRecentReports(recentReports, personalDetails);
2271-
recentReports = recentReports.concat(personalDetails);
2272-
personalDetails = [];
2273-
recentReports = orderOptions(recentReports, searchValue);
2278+
filteredRecentReports = recentReports.concat(personalDetailsWithoutDMs);
2279+
filteredPersonalDetails = [];
22742280
}
22752281

22762282
let userToInvite = null;
@@ -2287,11 +2293,11 @@ function filterOptions(options: Options, searchInputValue: string, config?: Filt
22872293
if (maxRecentReportsToShow > 0 && recentReports.length > maxRecentReportsToShow) {
22882294
recentReports.splice(maxRecentReportsToShow);
22892295
}
2290-
const filteredPersonalDetails = filteredPersonalDetailsOfRecentReports(recentReports, personalDetails);
22912296

2297+
const sortedRecentReports = orderOptions(filteredRecentReports, searchValue, {preferChatroomsOverThreads, preferPolicyExpenseChat, preferRecentExpenseReports});
22922298
return {
22932299
personalDetails: filteredPersonalDetails,
2294-
recentReports: orderOptions(recentReports, searchValue, {preferChatroomsOverThreads, preferPolicyExpenseChat, preferRecentExpenseReports}),
2300+
recentReports: sortedRecentReports,
22952301
userToInvite,
22962302
currentUserOption: matchResults.currentUserOption,
22972303
categoryOptions: [],
@@ -2349,6 +2355,7 @@ export {
23492355
formatSectionsFromSearchTerm,
23502356
getShareLogOptions,
23512357
filterOptions,
2358+
filteredPersonalDetailsOfRecentReports,
23522359
createOptionList,
23532360
createOptionFromReport,
23542361
getReportOption,

0 commit comments

Comments
 (0)