Skip to content

Commit 91b84ef

Browse files
committed
fix eslint
1 parent e7c543b commit 91b84ef

File tree

18 files changed

+209
-207
lines changed

18 files changed

+209
-207
lines changed

src/components/Search/SearchPageHeader.tsx

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,18 @@ import useNetwork from '@hooks/useNetwork';
1717
import useResponsiveLayout from '@hooks/useResponsiveLayout';
1818
import useTheme from '@hooks/useTheme';
1919
import useThemeStyles from '@hooks/useThemeStyles';
20-
import * as SearchActions from '@libs/actions/Search';
21-
import * as CardUtils from '@libs/CardUtils';
20+
import {
21+
approveMoneyRequestOnSearch,
22+
deleteMoneyRequestOnSearch,
23+
exportSearchItemsToCSV,
24+
payMoneyRequestOnSearch,
25+
unholdMoneyRequestOnSearch,
26+
updateAdvancedFilters,
27+
} from '@libs/actions/Search';
28+
import {mergeCardListWithWorkspaceFeeds} from '@libs/CardUtils';
2229
import Navigation from '@libs/Navigation/Navigation';
23-
import {getAllTaxRates} from '@libs/PolicyUtils';
24-
import * as PolicyUtils from '@libs/PolicyUtils';
25-
import * as SearchQueryUtils from '@libs/SearchQueryUtils';
30+
import {getAllTaxRates, hasVBBA} from '@libs/PolicyUtils';
31+
import {buildFilterFormValuesFromQuery, isCannedSearchQuery} from '@libs/SearchQueryUtils';
2632
import SearchSelectedNarrow from '@pages/Search/SearchSelectedNarrow';
2733
import variables from '@styles/variables';
2834
import CONST from '@src/CONST';
@@ -53,7 +59,7 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
5359
const taxRates = getAllTaxRates();
5460
const [userCardList = {}] = useOnyx(ONYXKEYS.CARD_LIST);
5561
const [workspaceCardFeeds = {}] = useOnyx(ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST);
56-
const allCards = useMemo(() => CardUtils.mergeCardListWithWorkspaceFeeds(workspaceCardFeeds, userCardList), [userCardList, workspaceCardFeeds]);
62+
const allCards = useMemo(() => mergeCardListWithWorkspaceFeeds(workspaceCardFeeds, userCardList), [userCardList, workspaceCardFeeds]);
5763
const [currencyList = {}] = useOnyx(ONYXKEYS.CURRENCY_LIST);
5864
const [policyCategories] = useOnyx(ONYXKEYS.COLLECTION.POLICY_CATEGORIES);
5965
const [policyTagsLists] = useOnyx(ONYXKEYS.COLLECTION.POLICY_TAGS);
@@ -88,7 +94,7 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
8894
}
8995

9096
setIsDeleteExpensesConfirmModalVisible(false);
91-
SearchActions.deleteMoneyRequestOnSearch(hash, selectedTransactionsKeys);
97+
deleteMoneyRequestOnSearch(hash, selectedTransactionsKeys);
9298

9399
// Translations copy for delete modal depends on amount of selected items,
94100
// We need to wait for modal to fully disappear before clearing them to avoid translation flicker between singular vs plural
@@ -128,7 +134,7 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
128134
const reportIDList = !selectedReports.length
129135
? Object.values(selectedTransactions).map((transaction) => transaction.reportID)
130136
: selectedReports?.filter((report) => !!report).map((report) => report.reportID) ?? [];
131-
SearchActions.approveMoneyRequestOnSearch(hash, reportIDList, transactionIDList);
137+
approveMoneyRequestOnSearch(hash, reportIDList, transactionIDList);
132138
},
133139
});
134140
}
@@ -167,9 +173,9 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
167173
return;
168174
}
169175

170-
const hasVBBA = PolicyUtils.hasVBBA(policyID);
176+
const hasPolicyVBBA = hasVBBA(policyID);
171177

172-
if (lastPolicyPaymentMethod !== CONST.IOU.PAYMENT_TYPE.ELSEWHERE && !hasVBBA) {
178+
if (lastPolicyPaymentMethod !== CONST.IOU.PAYMENT_TYPE.ELSEWHERE && !hasPolicyVBBA) {
173179
Navigation.navigate(ROUTES.SEARCH_REPORT.getRoute({reportID: item.reportID, backTo: activeRoute}));
174180
return;
175181
}
@@ -185,7 +191,7 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
185191
}))
186192
) as PaymentData[];
187193

188-
SearchActions.payMoneyRequestOnSearch(hash, paymentData, transactionIDList);
194+
payMoneyRequestOnSearch(hash, paymentData, transactionIDList);
189195
},
190196
});
191197
}
@@ -202,7 +208,7 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
202208
}
203209

204210
const reportIDList = selectedReports?.filter((report) => !!report).map((report) => report.reportID) ?? [];
205-
SearchActions.exportSearchItemsToCSV(
211+
exportSearchItemsToCSV(
206212
{
207213
query: status,
208214
jsonQuery: JSON.stringify(queryJSON),
@@ -250,7 +256,7 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
250256
return;
251257
}
252258

253-
SearchActions.unholdMoneyRequestOnSearch(hash, selectedTransactionsKeys);
259+
unholdMoneyRequestOnSearch(hash, selectedTransactionsKeys);
254260
},
255261
});
256262
}
@@ -355,13 +361,13 @@ function SearchPageHeader({queryJSON}: SearchPageHeaderProps) {
355361

356362
const onFiltersButtonPress = () => {
357363
hideProductTrainingTooltip();
358-
const filterFormValues = SearchQueryUtils.buildFilterFormValuesFromQuery(queryJSON, policyCategories, policyTagsLists, currencyList, personalDetails, allCards, reports, taxRates);
359-
SearchActions.updateAdvancedFilters(filterFormValues);
364+
const filterFormValues = buildFilterFormValuesFromQuery(queryJSON, policyCategories, policyTagsLists, currencyList, personalDetails, allCards, reports, taxRates);
365+
updateAdvancedFilters(filterFormValues);
360366

361367
Navigation.navigate(ROUTES.SEARCH_ADVANCED_FILTERS);
362368
};
363369

364-
const isCannedQuery = SearchQueryUtils.isCannedSearchQuery(queryJSON);
370+
const isCannedQuery = isCannedSearchQuery(queryJSON);
365371

366372
return (
367373
<>

src/components/Search/SearchPageHeaderInput.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ import type {SelectionListHandle} from '@components/SelectionList/types';
1414
import Text from '@components/Text';
1515
import useLocalize from '@hooks/useLocalize';
1616
import useThemeStyles from '@hooks/useThemeStyles';
17-
import * as SearchActions from '@libs/actions/Search';
18-
import * as CardUtils from '@libs/CardUtils';
17+
import {navigateToAndOpenReport} from '@libs/actions/Report';
18+
import {clearAllFilters} from '@libs/actions/Search';
19+
import {mergeCardListWithWorkspaceFeeds} from '@libs/CardUtils';
1920
import Navigation from '@libs/Navigation/Navigation';
2021
import {getAllTaxRates} from '@libs/PolicyUtils';
2122
import type {OptionData} from '@libs/ReportUtils';
22-
import * as SearchAutocompleteUtils from '@libs/SearchAutocompleteUtils';
23-
import * as SearchQueryUtils from '@libs/SearchQueryUtils';
23+
import {getAutocompleteQueryWithComma, getQueryWithoutAutocompletedPart} from '@libs/SearchAutocompleteUtils';
24+
import {buildUserReadableQueryString, getQueryWithUpdatedValues, isCannedSearchQuery, sanitizeSearchValue} from '@libs/SearchQueryUtils';
2425
import variables from '@styles/variables';
25-
import * as ReportUserActions from '@userActions/Report';
2626
import CONST from '@src/CONST';
2727
import type {TranslationPaths} from '@src/languages/types';
2828
import ONYXKEYS from '@src/ONYXKEYS';
@@ -74,11 +74,11 @@ function SearchPageHeaderInput({queryJSON, children}: SearchPageHeaderInputProps
7474
const taxRates = useMemo(() => getAllTaxRates(), []);
7575
const [userCardList = {}] = useOnyx(ONYXKEYS.CARD_LIST);
7676
const [workspaceCardFeeds = {}] = useOnyx(ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST);
77-
const allCards = useMemo(() => CardUtils.mergeCardListWithWorkspaceFeeds(workspaceCardFeeds, userCardList), [userCardList, workspaceCardFeeds]);
77+
const allCards = useMemo(() => mergeCardListWithWorkspaceFeeds(workspaceCardFeeds, userCardList), [userCardList, workspaceCardFeeds]);
7878

7979
const {type, inputQuery: originalInputQuery} = queryJSON;
80-
const isCannedQuery = SearchQueryUtils.isCannedSearchQuery(queryJSON);
81-
const queryText = SearchQueryUtils.buildUserReadableQueryString(queryJSON, personalDetails, reports, taxRates, allCards);
80+
const isCannedQuery = isCannedSearchQuery(queryJSON);
81+
const queryText = buildUserReadableQueryString(queryJSON, personalDetails, reports, taxRates, allCards);
8282
const headerText = isCannedQuery ? translate(getHeaderContent(type).titleText) : '';
8383

8484
// The actual input text that the user sees
@@ -117,7 +117,7 @@ function SearchPageHeaderInput({queryJSON, children}: SearchPageHeaderInputProps
117117

118118
const onSearchQueryChange = useCallback(
119119
(userQuery: string) => {
120-
const updatedUserQuery = SearchAutocompleteUtils.getAutocompleteQueryWithComma(textInputValue, userQuery);
120+
const updatedUserQuery = getAutocompleteQueryWithComma(textInputValue, userQuery);
121121
setTextInputValue(updatedUserQuery);
122122
setAutocompleteQueryValue(updatedUserQuery);
123123

@@ -136,15 +136,15 @@ function SearchPageHeaderInput({queryJSON, children}: SearchPageHeaderInputProps
136136
const submitSearch = useCallback(
137137
(queryString: SearchQueryString) => {
138138
const queryWithSubstitutions = getQueryWithSubstitutions(queryString, autocompleteSubstitutions);
139-
const updatedQuery = SearchQueryUtils.getQueryWithUpdatedValues(queryWithSubstitutions, queryJSON.policyID);
139+
const updatedQuery = getQueryWithUpdatedValues(queryWithSubstitutions, queryJSON.policyID);
140140
if (!updatedQuery) {
141141
return;
142142
}
143143

144144
Navigation.navigate(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query: updatedQuery}));
145145

146146
if (updatedQuery !== originalInputQuery) {
147-
SearchActions.clearAllFilters();
147+
clearAllFilters();
148148
setTextInputValue('');
149149
setAutocompleteQueryValue('');
150150
setIsAutocompleteListVisible(false);
@@ -161,8 +161,8 @@ function SearchPageHeaderInput({queryJSON, children}: SearchPageHeaderInputProps
161161
}
162162

163163
if (item.searchItemType === CONST.SEARCH.SEARCH_ROUTER_ITEM_TYPE.AUTOCOMPLETE_SUGGESTION && textInputValue) {
164-
const trimmedUserSearchQuery = SearchAutocompleteUtils.getQueryWithoutAutocompletedPart(textInputValue);
165-
onSearchQueryChange(`${trimmedUserSearchQuery}${SearchQueryUtils.sanitizeSearchValue(item.searchQuery)} `);
164+
const trimmedUserSearchQuery = getQueryWithoutAutocompletedPart(textInputValue);
165+
onSearchQueryChange(`${trimmedUserSearchQuery}${sanitizeSearchValue(item.searchQuery)} `);
166166

167167
if (item.mapKey && item.autocompleteID) {
168168
const substitutions = {...autocompleteSubstitutions, [item.mapKey]: item.autocompleteID};
@@ -175,7 +175,7 @@ function SearchPageHeaderInput({queryJSON, children}: SearchPageHeaderInputProps
175175
} else if (item?.reportID) {
176176
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(item?.reportID));
177177
} else if ('login' in item) {
178-
ReportUserActions.navigateToAndOpenReport(item.login ? [item.login] : [], false);
178+
navigateToAndOpenReport(item.login ? [item.login] : [], false);
179179
}
180180
},
181181
[autocompleteSubstitutions, onSearchQueryChange, submitSearch, textInputValue],

src/components/Search/SearchRouter/SearchRouterList.tsx

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ import useLocalize from '@hooks/useLocalize';
1717
import usePolicy from '@hooks/usePolicy';
1818
import useResponsiveLayout from '@hooks/useResponsiveLayout';
1919
import useThemeStyles from '@hooks/useThemeStyles';
20-
import * as CardUtils from '@libs/CardUtils';
21-
import * as OptionsListUtils from '@libs/OptionsListUtils';
22-
import type {SearchOption} from '@libs/OptionsListUtils';
20+
import {searchInServer} from '@libs/actions/Report';
21+
import {getCardDescription, isCard, isCardIssued, mergeCardListWithWorkspaceFeeds} from '@libs/CardUtils';
22+
import {combineOrderingOfReportsAndPersonalDetails, getSearchOptions, getValidOptions} from '@libs/OptionsListUtils';
23+
import type {Options, SearchOption} from '@libs/OptionsListUtils';
2324
import Performance from '@libs/Performance';
2425
import {getAllTaxRates} from '@libs/PolicyUtils';
2526
import type {OptionData} from '@libs/ReportUtils';
@@ -29,11 +30,10 @@ import {
2930
getAutocompleteRecentTags,
3031
getAutocompleteTags,
3132
getAutocompleteTaxList,
33+
getQueryWithoutAutocompletedPart,
3234
parseForAutocomplete,
3335
} from '@libs/SearchAutocompleteUtils';
34-
import * as SearchAutocompleteUtils from '@libs/SearchAutocompleteUtils';
35-
import * as SearchQueryUtils from '@libs/SearchQueryUtils';
36-
import * as ReportUserActions from '@userActions/Report';
36+
import {buildSearchQueryJSON, buildUserReadableQueryString, sanitizeSearchValue} from '@libs/SearchQueryUtils';
3737
import Timing from '@userActions/Timing';
3838
import CONST from '@src/CONST';
3939
import ONYXKEYS from '@src/ONYXKEYS';
@@ -47,7 +47,7 @@ type AutocompleteItemData = {
4747
mapKey?: SearchFilterKey;
4848
};
4949

50-
type GetAdditionalSectionsCallback = (options: OptionsListUtils.Options) => Array<SectionListDataType<OptionData | SearchQueryItem>> | undefined;
50+
type GetAdditionalSectionsCallback = (options: Options) => Array<SectionListDataType<OptionData | SearchQueryItem>> | undefined;
5151

5252
type SearchRouterListProps = {
5353
/** Value of TextInput */
@@ -139,7 +139,7 @@ function SearchRouterList(
139139
if (!areOptionsInitialized) {
140140
return defaultListOptions;
141141
}
142-
return OptionsListUtils.getSearchOptions(options, betas ?? []);
142+
return getSearchOptions(options, betas ?? []);
143143
}, [areOptionsInitialized, betas, options]);
144144

145145
const [isInitialRender, setIsInitialRender] = useState(true);
@@ -150,15 +150,15 @@ function SearchRouterList(
150150

151151
const [userCardList = {}] = useOnyx(ONYXKEYS.CARD_LIST);
152152
const [workspaceCardFeeds = {}] = useOnyx(ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST);
153-
const allCards = useMemo(() => CardUtils.mergeCardListWithWorkspaceFeeds(workspaceCardFeeds, userCardList), [userCardList, workspaceCardFeeds]);
153+
const allCards = useMemo(() => mergeCardListWithWorkspaceFeeds(workspaceCardFeeds, userCardList), [userCardList, workspaceCardFeeds]);
154154
const cardAutocompleteList = Object.values(allCards);
155155

156156
const participantsAutocompleteList = useMemo(() => {
157157
if (!areOptionsInitialized) {
158158
return [];
159159
}
160160

161-
const filteredOptions = OptionsListUtils.getValidOptions(
161+
const filteredOptions = getValidOptions(
162162
{
163163
reports: options.reports,
164164
personalDetails: options.personalDetails,
@@ -338,17 +338,14 @@ function SearchRouterList(
338338
}
339339
case CONST.SEARCH.SYNTAX_FILTER_KEYS.CARD_ID: {
340340
const filteredCards = cardAutocompleteList
341-
.filter((card) => CardUtils.isCard(card) && CardUtils.isCardIssued(card))
342-
.filter(
343-
(card) =>
344-
card.bank.toLowerCase().includes(autocompleteValue.toLowerCase()) && !alreadyAutocompletedKeys.includes(CardUtils.getCardDescription(card.cardID).toLowerCase()),
345-
)
341+
.filter((card) => isCard(card) && isCardIssued(card))
342+
.filter((card) => card.bank.toLowerCase().includes(autocompleteValue.toLowerCase()) && !alreadyAutocompletedKeys.includes(getCardDescription(card.cardID).toLowerCase()))
346343
.sort()
347344
.slice(0, 10);
348345

349346
return filteredCards.map((card) => ({
350347
filterKey: CONST.SEARCH.SEARCH_USER_FRIENDLY_KEYS.CARD_ID,
351-
text: CardUtils.getCardDescription(card.cardID, allCards),
348+
text: getCardDescription(card.cardID, allCards),
352349
autocompleteID: card.cardID.toString(),
353350
mapKey: CONST.SEARCH.SYNTAX_FILTER_KEYS.CARD_ID,
354351
}));
@@ -380,9 +377,9 @@ function SearchRouterList(
380377
}, [recentSearches]);
381378

382379
const recentSearchesData = sortedRecentSearches?.slice(0, 5).map(({query, timestamp}) => {
383-
const searchQueryJSON = SearchQueryUtils.buildSearchQueryJSON(query);
380+
const searchQueryJSON = buildSearchQueryJSON(query);
384381
return {
385-
text: searchQueryJSON ? SearchQueryUtils.buildUserReadableQueryString(searchQueryJSON, personalDetails, reports, taxRates, allCards) : query,
382+
text: searchQueryJSON ? buildUserReadableQueryString(searchQueryJSON, personalDetails, reports, taxRates, allCards) : query,
386383
singleIcon: Expensicons.History,
387384
searchQuery: query,
388385
keyForList: timestamp,
@@ -402,7 +399,7 @@ function SearchRouterList(
402399

403400
Timing.start(CONST.TIMING.SEARCH_FILTER_OPTIONS);
404401
const filteredOptions = filterOptions(autocompleteQueryValue);
405-
const orderedOptions = OptionsListUtils.combineOrderingOfReportsAndPersonalDetails(filteredOptions, autocompleteQueryValue, {
402+
const orderedOptions = combineOrderingOfReportsAndPersonalDetails(filteredOptions, autocompleteQueryValue, {
406403
sortByReportTypeInSearch: true,
407404
preferChatroomsOverThreads: true,
408405
});
@@ -416,7 +413,7 @@ function SearchRouterList(
416413
}, [autocompleteQueryValue, filterOptions, searchOptions]);
417414

418415
useEffect(() => {
419-
ReportUserActions.searchInServer(autocompleteQueryValue.trim());
416+
searchInServer(autocompleteQueryValue.trim());
420417
}, [autocompleteQueryValue]);
421418

422419
/* Sections generation */
@@ -463,8 +460,8 @@ function SearchRouterList(
463460
return;
464461
}
465462

466-
const trimmedUserSearchQuery = SearchAutocompleteUtils.getQueryWithoutAutocompletedPart(autocompleteQueryValue);
467-
setTextQuery(`${trimmedUserSearchQuery}${SearchQueryUtils.sanitizeSearchValue(focusedItem.searchQuery)} `);
463+
const trimmedUserSearchQuery = getQueryWithoutAutocompletedPart(autocompleteQueryValue);
464+
setTextQuery(`${trimmedUserSearchQuery}${sanitizeSearchValue(focusedItem.searchQuery)} `);
468465
updateAutocompleteSubstitutions(focusedItem);
469466
},
470467
[autocompleteQueryValue, setTextQuery, updateAutocompleteSubstitutions],

src/components/Search/SearchRouter/buildSubstitutionsMap.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type {OnyxCollection} from 'react-native-onyx';
22
import type {SearchAutocompleteQueryRange, SearchFilterKey} from '@components/Search/types';
3-
import * as parser from '@libs/SearchParser/autocompleteParser';
4-
import * as SearchQueryUtils from '@libs/SearchQueryUtils';
3+
import {parse} from '@libs/SearchParser/autocompleteParser';
4+
import {getFilterDisplayValue} from '@libs/SearchQueryUtils';
55
import CONST from '@src/CONST';
6-
import type * as OnyxTypes from '@src/types/onyx';
6+
import type {CardList, PersonalDetailsList, Report} from '@src/types/onyx';
77
import type {SubstitutionMap} from './getQueryWithSubstitutions';
88

99
const getSubstitutionsKey = (filterKey: SearchFilterKey, value: string) => `${filterKey}:${value}`;
@@ -26,12 +26,12 @@ const getSubstitutionsKey = (filterKey: SearchFilterKey, value: string) => `${fi
2626
*/
2727
function buildSubstitutionsMap(
2828
query: string,
29-
personalDetails: OnyxTypes.PersonalDetailsList | undefined,
30-
reports: OnyxCollection<OnyxTypes.Report>,
29+
personalDetails: PersonalDetailsList | undefined,
30+
reports: OnyxCollection<Report>,
3131
allTaxRates: Record<string, string[]>,
32-
cardList: OnyxTypes.CardList,
32+
cardList: CardList,
3333
): SubstitutionMap {
34-
const parsedQuery = parser.parse(query) as {ranges: SearchAutocompleteQueryRange[]};
34+
const parsedQuery = parse(query) as {ranges: SearchAutocompleteQueryRange[]};
3535

3636
const searchAutocompleteQueryRanges = parsedQuery.ranges;
3737

@@ -62,7 +62,7 @@ function buildSubstitutionsMap(
6262
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.IN ||
6363
filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.CARD_ID
6464
) {
65-
const displayValue = SearchQueryUtils.getFilterDisplayValue(filterKey, filterValue, personalDetails, reports, cardList);
65+
const displayValue = getFilterDisplayValue(filterKey, filterValue, personalDetails, reports, cardList);
6666

6767
// If displayValue === filterValue, then it means there is nothing to substitute, so we don't add any key to map
6868
if (displayValue !== filterValue) {

0 commit comments

Comments
 (0)