Skip to content

Commit eab18fa

Browse files
authored
Merge pull request Expensify#86250 from dukenv0307/fix/66411-part-16
refactor getAlternateText to have fewer params
2 parents 216a7e0 + e99022e commit eab18fa

23 files changed

Lines changed: 187 additions & 301 deletions

src/components/OptionListContextProvider.tsx

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, {createContext, useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react';
22
import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
3-
import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
43
import useOnyx from '@hooks/useOnyx';
54
import usePrevious from '@hooks/usePrevious';
65
import usePrivateIsArchivedMap from '@hooks/usePrivateIsArchivedMap';
@@ -66,17 +65,15 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
6665
const personalDetails = usePersonalDetails();
6766
const prevPersonalDetails = usePrevious(personalDetails);
6867
const privateIsArchivedMap = usePrivateIsArchivedMap();
69-
const currentUserPersonalDetails = useCurrentUserPersonalDetails();
70-
const currentUserAccountID = currentUserPersonalDetails.accountID;
7168
const hasInitialData = useMemo(() => Object.keys(personalDetails ?? {}).length > 0, [personalDetails]);
7269

7370
const loadOptions = useCallback(() => {
74-
const optionLists = createOptionList(personalDetails, currentUserAccountID, privateIsArchivedMap, reports, allPolicies, reportAttributes?.reports);
71+
const optionLists = createOptionList(personalDetails, privateIsArchivedMap, reports, allPolicies, reportAttributes?.reports);
7572
setOptions({
7673
reports: optionLists.reports,
7774
personalDetails: optionLists.personalDetails,
7875
});
79-
}, [personalDetails, currentUserAccountID, privateIsArchivedMap, reports, allPolicies, reportAttributes?.reports]);
76+
}, [personalDetails, privateIsArchivedMap, reports, allPolicies, reportAttributes?.reports]);
8077

8178
/**
8279
* This effect is responsible for generating the options list when their data is not yet initialized
@@ -134,7 +131,7 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
134131
const reportID = reportKey.replace(ONYXKEYS.COLLECTION.REPORT, '');
135132
const privateIsArchived = privateIsArchivedMap[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${reportID}`];
136133
const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`];
137-
const {reportOption} = processReport(report, personalDetails, privateIsArchived, currentUserAccountID, policy, reportAttributes?.reports);
134+
const {reportOption} = processReport(report, personalDetails, privateIsArchived, policy, reportAttributes?.reports);
138135

139136
if (reportOption) {
140137
updatedReportsMap.set(reportID, reportOption);
@@ -148,7 +145,7 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
148145
reports: Array.from(updatedReportsMap.values()),
149146
};
150147
});
151-
}, [changedReportsEntries, personalDetails, currentUserAccountID, reports, allPolicies, reportAttributes?.reports, privateIsArchivedMap]);
148+
}, [changedReportsEntries, personalDetails, reports, allPolicies, reportAttributes?.reports, privateIsArchivedMap]);
152149

153150
useEffect(() => {
154151
if (!changedReportActions || !areOptionsInitialized.current) {
@@ -171,7 +168,7 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
171168
const reportItem = updatedReportsMap.get(reportID)?.item;
172169
const privateIsArchived = privateIsArchivedMap[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${reportID}`];
173170
const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${reportItem?.policyID}`];
174-
const {reportOption} = processReport(reportItem, personalDetails, privateIsArchived, currentUserAccountID, policy, reportAttributes?.reports);
171+
const {reportOption} = processReport(reportItem, personalDetails, privateIsArchived, policy, reportAttributes?.reports);
175172

176173
if (reportOption) {
177174
updatedReportsMap.set(reportID, reportOption);
@@ -183,7 +180,7 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
183180
reports: Array.from(updatedReportsMap.values()),
184181
};
185182
});
186-
}, [changedReportActions, personalDetails, currentUserAccountID, reports, allPolicies, reportAttributes?.reports, privateIsArchivedMap]);
183+
}, [changedReportActions, personalDetails, reports, allPolicies, reportAttributes?.reports, privateIsArchivedMap]);
187184

188185
/**
189186
* This effect is used to update the options list when personal details change.
@@ -203,7 +200,6 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
203200
if (!prevPersonalDetails) {
204201
const {personalDetails: newPersonalDetailsOptions, reports: newReports} = createOptionList(
205202
personalDetails,
206-
currentUserAccountID,
207203
privateIsArchivedMap,
208204
reports,
209205
allPolicies,
@@ -243,7 +239,7 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
243239

244240
const privateIsArchived = privateIsArchivedMap[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${report.reportID}`];
245241
const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`];
246-
const newReportOption = createOptionFromReport(report, personalDetails, currentUserAccountID, privateIsArchived, policy, reportAttributes?.reports, {
242+
const newReportOption = createOptionFromReport(report, personalDetails, privateIsArchived, policy, reportAttributes?.reports, {
247243
showPersonalDetails: true,
248244
});
249245
const replaceIndex = options.reports.findIndex((option) => option.reportID === report.reportID);
@@ -255,7 +251,7 @@ function OptionsListContextProvider({children}: OptionsListProviderProps) {
255251
}
256252

257253
// since personal details are not a collection, we need to recreate the whole list from scratch
258-
const newPersonalDetailsOptions = createOptionList(personalDetails, currentUserAccountID, privateIsArchivedMap, reports, allPolicies, reportAttributes?.reports).personalDetails;
254+
const newPersonalDetailsOptions = createOptionList(personalDetails, privateIsArchivedMap, reports, allPolicies, reportAttributes?.reports).personalDetails;
259255

260256
setOptions((prevOptions) => {
261257
const newOptions = {...prevOptions};

src/components/Search/SearchFiltersChatsSelector.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,11 @@ function SearchFiltersChatsSelector({initialReportIDs, onFiltersUpdate, isScreen
7272
const privateIsArchived = privateIsArchivedMap[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${id}`];
7373
const reportData = reports?.[`${ONYXKEYS.COLLECTION.REPORT}${id}`];
7474
const reportPolicy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${reportData?.policyID}`];
75-
const report = getSelectedOptionData(
76-
createOptionFromReport({...reportData, reportID: id}, personalDetails, currentUserAccountID, privateIsArchived, reportPolicy, reportAttributesDerived),
77-
);
75+
const report = getSelectedOptionData(createOptionFromReport({...reportData, reportID: id}, personalDetails, privateIsArchived, reportPolicy, reportAttributesDerived));
7876
const isReportArchived = !!privateIsArchived;
7977
const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${reportData?.policyID}`];
8078
const reportPolicyTags = policyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${getNonEmptyStringOnyxID(report?.policyID)}`];
81-
const alternateText = getAlternateText(report, {}, isReportArchived, currentUserAccountID, policy, {}, undefined, undefined, reportAttributesDerived, reportPolicyTags);
79+
const alternateText = getAlternateText(report, {}, {isReportArchived, policy, reportAttributesDerived, policyTags: reportPolicyTags});
8280
return {...report, alternateText};
8381
});
8482

src/components/Search/SearchRouter/SearchRouter.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ function SearchRouter({onRouterClose, shouldHideInputCaret, isSearchRouterDispla
112112

113113
const privateIsArchived = privateIsArchivedMap[`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${contextualReportID}`];
114114
const reportPolicy = policies?.[`${ONYXKEYS.COLLECTION.POLICY}${report.policyID}`];
115-
const option = createOptionFromReport(report, personalDetails, currentUserAccountID, privateIsArchived, reportPolicy, undefined, {showPersonalDetails: true});
115+
const option = createOptionFromReport(report, personalDetails, privateIsArchived, reportPolicy, undefined, {showPersonalDetails: true});
116116
reportForContextualSearch = option;
117117
}
118118

@@ -174,7 +174,6 @@ function SearchRouter({onRouterClose, shouldHideInputCaret, isSearchRouterDispla
174174
styles.activeComponentBG,
175175
reports,
176176
personalDetails,
177-
currentUserAccountID,
178177
privateIsArchivedMap,
179178
policies,
180179
],

src/hooks/useContactImport.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,14 @@ function useContactImport(): UseContactImportResult {
3838
const personalDetails = usePersonalDetails();
3939
const currentUserPersonalDetails = useCurrentUserPersonalDetails();
4040
const currentUserEmail = currentUserPersonalDetails.email ?? '';
41-
const currentUserAccountID = currentUserPersonalDetails.accountID;
4241

4342
const importAndSaveContacts = useCallback(() => {
4443
contactImport().then(({contactList, permissionStatus}: ContactImportResult) => {
4544
setContactPermissionState(permissionStatus);
46-
const usersFromContact = getContacts(contactList, localeCompare, countryCode, loginList, currentUserEmail, currentUserAccountID, personalDetails);
45+
const usersFromContact = getContacts(contactList, localeCompare, countryCode, loginList, currentUserEmail, personalDetails);
4746
setContacts(usersFromContact);
4847
});
49-
}, [localeCompare, countryCode, loginList, currentUserEmail, currentUserAccountID, personalDetails]);
48+
}, [localeCompare, countryCode, loginList, currentUserEmail, personalDetails]);
5049

5150
useContactPermissions({
5251
importAndSaveContacts,

src/hooks/useFilteredOptions.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {createFilteredOptionList} from '@libs/OptionsListUtils';
44
import type {OptionList} from '@libs/OptionsListUtils/types';
55
import ONYXKEYS from '@src/ONYXKEYS';
66
import type Beta from '@src/types/onyx/Beta';
7-
import useCurrentUserPersonalDetails from './useCurrentUserPersonalDetails';
87
import useOnyx from './useOnyx';
98
import usePrivateIsArchivedMap from './usePrivateIsArchivedMap';
109
import useReportAttributes from './useReportAttributes';
@@ -77,34 +76,21 @@ function useFilteredOptions(config: UseFilteredOptionsConfig = {}): UseFilteredO
7776
const reportAttributesDerived = useReportAttributes();
7877

7978
const privateIsArchivedMap = usePrivateIsArchivedMap();
80-
const currentUserPersonalDetails = useCurrentUserPersonalDetails();
8179

8280
const totalReports = allReports ? Object.keys(allReports).length : 0;
8381

8482
// React Compiler can't prove referential stability for the destructured `config` param with default values, so explicit useMemo is required here.
8583
const options: OptionList | null = useMemo(
8684
() =>
8785
enabled && allReports && allPersonalDetails
88-
? createFilteredOptionList(allPersonalDetails, allReports, currentUserPersonalDetails.accountID, reportAttributesDerived, privateIsArchivedMap, allPolicies, {
86+
? createFilteredOptionList(allPersonalDetails, allReports, reportAttributesDerived, privateIsArchivedMap, allPolicies, {
8987
maxRecentReports: reportsLimit,
9088
includeP2P,
9189
searchTerm,
9290
betas,
9391
})
9492
: null,
95-
[
96-
enabled,
97-
allReports,
98-
allPersonalDetails,
99-
currentUserPersonalDetails.accountID,
100-
reportAttributesDerived,
101-
privateIsArchivedMap,
102-
allPolicies,
103-
reportsLimit,
104-
includeP2P,
105-
searchTerm,
106-
betas,
107-
],
93+
[enabled, allReports, allPersonalDetails, reportAttributesDerived, privateIsArchivedMap, allPolicies, reportsLimit, includeP2P, searchTerm, betas],
10894
);
10995

11096
const hasMore = options ? reportsLimit < totalReports : false;

src/libs/ContactUtils.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ const getContacts = (
3535
countryCode: number,
3636
loginList: OnyxEntry<Login>,
3737
currentUserEmail: string,
38-
currentUserAccountID: number,
3938
personalDetails: OnyxEntry<PersonalDetailsList>,
4039
): Array<SearchOption<PersonalDetails>> => {
4140
return deviceContacts
@@ -59,7 +58,6 @@ const getContacts = (
5958
countryCode,
6059
loginList,
6160
currentUserEmail,
62-
currentUserAccountID,
6361
personalDetails,
6462
});
6563
})

0 commit comments

Comments
 (0)