Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
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
2 changes: 1 addition & 1 deletion .storybook/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import type {Parameters} from 'storybook/internal/types';
import EnvironmentProvider from '@components/EnvironmentContextProvider';
import OnyxListItemProvider from '@components/OnyxListItemProvider';
import ScreenWrapperStatusContext from '@components/ScreenWrapper/ScreenWrapperStatusContext';
import {SearchContextProvider} from '@components/Search/SearchContext';
import {SearchContextProvider} from '@components/Search/SearchContextProvider';
import colors from '@styles/theme/colors';
import ComposeProviders from '@src/components/ComposeProviders';
import HTMLEngineProvider from '@src/components/HTMLEngineProvider';
Expand Down
2 changes: 1 addition & 1 deletion config/eslint/eslint.seatbelt.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"../../src/Expensify.tsx" "react-hooks/set-state-in-effect" 1
"../../src/GlobalModals.tsx" "no-restricted-syntax" 2
"../../src/ONYXKEYS.ts" "no-restricted-syntax" 2
"../../src/ROUTES.ts" "@typescript-eslint/no-deprecated/getUrlWithBackToParam" 160
"../../src/ROUTES.ts" "@typescript-eslint/no-deprecated/getUrlWithBackToParam" 169
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this change?

"../../src/components/AccountingConnectionConfirmationModal.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
"../../src/components/ActionSheetAwareScrollView/useActionSheetAwareScrollViewRef.ts" "react-hooks/immutability" 1
"../../src/components/ActionSheetAwareScrollView/useActionSheetKeyboardSpacing.ts" "@typescript-eslint/no-deprecated/useScrollViewOffset" 1
Expand Down
4 changes: 2 additions & 2 deletions src/components/MoneyReportHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import MoneyReportHeaderActions from './MoneyReportHeaderActions';
import MoneyReportHeaderModals from './MoneyReportHeaderModals';
import MoneyReportHeaderMoreContent from './MoneyReportHeaderMoreContent';
import {PaymentAnimationsProvider} from './PaymentAnimationsContext';
import {useSearchActionsContext} from './Search/SearchContext';
import {useSearchSelectionActions} from './Search/SearchContext';

type MoneyReportHeaderProps = {
/** The reportID of the report currently being looked at */
Expand Down Expand Up @@ -52,7 +52,7 @@ function MoneyReportHeader({reportID, shouldDisplayBackButton = false, onBackBut
}

function MoneyReportHeaderContent({reportID: reportIDProp, shouldDisplayBackButton = false, onBackButtonPress}: MoneyReportHeaderProps) {
const {clearSelectedTransactions} = useSearchActionsContext();
const {clearSelectedTransactions} = useSearchSelectionActions();
const [moneyRequestReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportIDProp}`);
const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${getNonEmptyStringOnyxID(moneyRequestReport?.policyID)}`);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {useMoneyReportHeaderModals} from '@components/MoneyReportHeaderModalsCon
import NavigationDeferredMount from '@components/NavigationDeferredMount';
import {usePaymentAnimationsContext} from '@components/PaymentAnimationsContext';
import type {PopoverMenuItem} from '@components/PopoverMenu';
import {useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchQueryContext, useSearchResultsContext} from '@components/Search/SearchContext';
import type {PaymentActionParams} from '@components/SettlementButton/types';
import useActiveAdminPolicies from '@hooks/useActiveAdminPolicies';
import {useCurrencyListActions} from '@hooks/useCurrencyList';
Expand Down Expand Up @@ -132,7 +132,8 @@ function MoneyReportHeaderSecondaryActionsInner({reportID, primaryAction, isRepo

const {isDelegateAccessRestricted} = useDelegateNoAccessState();
const {showDelegateNoAccessModal} = useDelegateNoAccessActions();
const {currentSearchQueryJSON, currentSearchKey, currentSearchResults} = useSearchStateContext();
const {currentSearchQueryJSON, currentSearchKey} = useSearchQueryContext();
const {currentSearchResults} = useSearchResultsContext();
const shouldCalculateTotals = useSearchShouldCalculateTotals(currentSearchKey, currentSearchQueryJSON?.hash, true);

const isInvoiceReport = isInvoiceReportUtil(moneyRequestReport);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {useMoneyReportHeaderModals} from '@components/MoneyReportHeaderModalsCon
import {usePaymentAnimationsContext} from '@components/PaymentAnimationsContext';
import type {PopoverMenuItem} from '@components/PopoverMenu';
import BulkDuplicateHandler from '@components/Search/BulkDuplicateHandler';
import {useSearchActionsContext, useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchQueryContext, useSearchResultsContext, useSearchSelectionActions, useSearchSelectionContext} from '@components/Search/SearchContext';
import type {PaymentActionParams} from '@components/SettlementButton/types';
import useActiveAdminPolicies from '@hooks/useActiveAdminPolicies';
import useConfirmModal from '@hooks/useConfirmModal';
Expand Down Expand Up @@ -88,8 +88,10 @@ function MoneyReportHeaderSelectionDropdown({reportID, primaryAction, isReportIn
const lastWorkspaceNumber = useLastWorkspaceNumber();
const {convertToDisplayString} = useCurrencyListActions();

const {selectedTransactionIDs, currentSearchQueryJSON, currentSearchKey, currentSearchResults} = useSearchStateContext();
const {clearSelectedTransactions} = useSearchActionsContext();
const {selectedTransactionIDs} = useSearchSelectionContext();
const {currentSearchQueryJSON, currentSearchKey} = useSearchQueryContext();
const {currentSearchResults} = useSearchResultsContext();
const {clearSelectedTransactions} = useSearchSelectionActions();
const shouldCalculateTotals = useSearchShouldCalculateTotals(currentSearchKey, currentSearchQueryJSON?.hash, true);

const [moneyRequestReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${getNonEmptyStringOnyxID(reportID)}`);
Expand Down
6 changes: 3 additions & 3 deletions src/components/MoneyReportHeaderActions/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {View} from 'react-native';
import type {ValueOf} from 'type-fest';
import type {ButtonWithDropdownMenuRef} from '@components/ButtonWithDropdownMenu/types';
import MoneyReportHeaderPrimaryAction from '@components/MoneyReportHeaderPrimaryAction';
import {useSearchActionsContext, useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchSelectionActions, useSearchSelectionContext} from '@components/Search/SearchContext';
import useExportAgainModal from '@hooks/useExportAgainModal';
import useOnyx from '@hooks/useOnyx';
import useResponsiveLayout from '@hooks/useResponsiveLayout';
Expand Down Expand Up @@ -44,8 +44,8 @@ function MoneyReportHeaderActions({reportID, primaryAction, isReportInSearch, ba

const {triggerExportOrConfirm} = useExportAgainModal(moneyRequestReport?.reportID, moneyRequestReport?.policyID);

const {selectedTransactionIDs} = useSearchStateContext();
const {clearSelectedTransactions} = useSearchActionsContext();
const {selectedTransactionIDs} = useSearchSelectionContext();
const {clearSelectedTransactions} = useSearchSelectionActions();
const hasSelectedTransactions = !!selectedTransactionIDs.length;
const isTransactionThread = !!transactionThreadReportID;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React from 'react';
import {useDelegateNoAccessActions, useDelegateNoAccessState} from '@components/DelegateNoAccessModalProvider';
import {useMoneyReportHeaderModals} from '@components/MoneyReportHeaderModalsContext';
import {usePaymentAnimationsContext} from '@components/PaymentAnimationsContext';
import {useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchQueryContext, useSearchResultsContext} from '@components/Search/SearchContext';
import AnimatedSettlementButton from '@components/SettlementButton/AnimatedSettlementButton';
import type {PaymentActionParams} from '@components/SettlementButton/types';
import {useCurrencyListActions} from '@hooks/useCurrencyList';
Expand Down Expand Up @@ -107,7 +107,8 @@ function PayPrimaryAction({reportID, chatReportID}: PayPrimaryActionProps) {
const totalAmount = getTotalAmountForIOUReportPreviewButton(moneyRequestReport, policy, CONST.REPORT.PRIMARY_ACTIONS.PAY, nonPendingDeleteTransactions, convertToDisplayString);
const isAnyTransactionOnHold = hasHeldExpensesReportUtils(transactions);

const {currentSearchQueryJSON, currentSearchKey, currentSearchResults} = useSearchStateContext();
const {currentSearchQueryJSON, currentSearchKey} = useSearchQueryContext();
const {currentSearchResults} = useSearchResultsContext();
const shouldCalculateTotals = useSearchShouldCalculateTotals(currentSearchKey, currentSearchQueryJSON?.hash, true);

const {openHoldMenu} = useMoneyReportHeaderModals();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {delegateEmailSelector} from '@selectors/Account';
import React from 'react';
import AnimatedSubmitButton from '@components/AnimatedSubmitButton';
import {usePaymentAnimationsContext} from '@components/PaymentAnimationsContext';
import {useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchQueryContext, useSearchResultsContext} from '@components/Search/SearchContext';
import useConfirmPendingRTERAndProceed from '@hooks/useConfirmPendingRTERAndProceed';
import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
import useLocalize from '@hooks/useLocalize';
Expand Down Expand Up @@ -68,7 +68,8 @@ function SubmitPrimaryAction({reportID}: SubmitPrimaryActionProps) {
);
const shouldBlockSubmit = isBlockSubmitDueToStrictPolicyRules || isBlockSubmitDueToPreventSelfApproval;

const {currentSearchQueryJSON, currentSearchKey, currentSearchResults} = useSearchStateContext();
const {currentSearchQueryJSON, currentSearchKey} = useSearchQueryContext();
const {currentSearchResults} = useSearchResultsContext();
const shouldCalculateTotals = useSearchShouldCalculateTotals(currentSearchKey, currentSearchQueryJSON?.hash, true);

const handleSubmit = () => {
Expand Down
6 changes: 3 additions & 3 deletions src/components/MoneyRequestHeaderSecondaryActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ import HoldOrRejectEducationalModal from './HoldOrRejectEducationalModal';
import HoldSubmitterEducationalModal from './HoldSubmitterEducationalModal';
import {ModalActions} from './Modal/Global/ModalContext';
import {usePersonalDetails} from './OnyxListItemProvider';
import {useSearchActionsContext, useSearchStateContext} from './Search/SearchContext';
import {useSearchQueryContext, useSearchSelectionActions} from './Search/SearchContext';
import {useWideRHPState} from './WideRHPContextProvider';

type MoneyRequestHeaderSecondaryActionsProps = {
Expand Down Expand Up @@ -162,8 +162,8 @@ function MoneyRequestHeaderSecondaryActions({reportID, onBackButtonPress}: Money
const {showConfirmModal} = useConfirmModal();
const {isDelegateAccessRestricted} = useDelegateNoAccessState();
const {showDelegateNoAccessModal} = useDelegateNoAccessActions();
const {currentSearchHash} = useSearchStateContext();
const {removeTransaction} = useSearchActionsContext();
const {currentSearchHash} = useSearchQueryContext();
const {removeTransaction} = useSearchSelectionActions();
const {duplicateTransactions, duplicateTransactionViolations} = useDuplicateTransactionsAndViolations(transaction?.transactionID ? [transaction.transactionID] : []);
const isReportInSearch = route.name === SCREENS.RIGHT_MODAL.SEARCH_REPORT || route.name === SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT;
const {getCurrencyDecimals} = useCurrencyListActions();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, {useEffect, useState} from 'react';
import {View} from 'react-native';
import type {OnyxEntry} from 'react-native-onyx';
import PrevNextButtons from '@components/PrevNextButtons';
import {useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchResultsContext} from '@components/Search/SearchContext';
import Text from '@components/Text';
import useFilterPendingDeleteReports from '@hooks/useFilterPendingDeleteReports';
import useOnyx from '@hooks/useOnyx';
Expand Down Expand Up @@ -222,7 +222,7 @@ function MoneyRequestReportNavigation({reportID, shouldDisplayNarrowVersion}: Mo
const [snapshotGuard = EMPTY_GUARD] = useOnyx(`${ONYXKEYS.COLLECTION.SNAPSHOT}${hash}`, {selector: snapshotGuardSelector});

// Fast-path hooks (always called to satisfy rules of hooks)
const {sortedReportIDs} = useSearchStateContext();
const {sortedReportIDs} = useSearchResultsContext();
const [lastSearchQuery] = useOnyx(ONYXKEYS.REPORT_NAVIGATION_LAST_SEARCH_QUERY);
const searchLoadingSelector = (data: OnyxEntry<SearchResults>) => !!data?.search?.isLoading;
const [isSearchLoading = false] = useOnyx(`${ONYXKEYS.COLLECTION.SNAPSHOT}${lastSearchQuery?.queryJSON?.hash}`, {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import Modal from '@components/Modal';
import OfflineWithFeedback from '@components/OfflineWithFeedback';
import ScrollView from '@components/ScrollView';
import DropdownButton from '@components/Search/FilterDropdowns/DropdownButton';
import {useSearchActionsContext, useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchSelectionActions, useSearchSelectionContext} from '@components/Search/SearchContext';
import type {SearchCustomColumnIds, SortOrder} from '@components/Search/types';
import SelectionList from '@components/SelectionList';
import SingleSelectListItem from '@components/SelectionList/ListItem/SingleSelectListItem';
Expand Down Expand Up @@ -206,8 +206,8 @@ function MoneyRequestReportTransactionList({
return hasPendingDeletionTransaction || transactions.some(getTransactionPendingAction);
}, [hasPendingDeletionTransaction, transactions]);

const {selectedTransactionIDs} = useSearchStateContext();
const {setSelectedTransactions, clearSelectedTransactions} = useSearchActionsContext();
const {selectedTransactionIDs} = useSearchSelectionContext();
const {setSelectedTransactions, clearSelectedTransactions} = useSearchSelectionActions();
useHandleSelectionMode(selectedTransactionIDs);
const isMobileSelectionModeEnabled = useMobileSelectionMode();

Expand Down
10 changes: 5 additions & 5 deletions src/components/MoneyRequestReportView/SelectionToolbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback';
import {PressableWithFeedback} from '@components/Pressable';
import ProcessMoneyReportHoldMenu from '@components/ProcessMoneyReportHoldMenu';
import BulkDuplicateHandler from '@components/Search/BulkDuplicateHandler';
import {useSearchActionsContext, useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchSelectionActions, useSearchSelectionContext} from '@components/Search/SearchContext';
import Text from '@components/Text';
import useConfirmModal from '@hooks/useConfirmModal';
import useFilterSelectedTransactions from '@hooks/useFilterSelectedTransactions';
Expand Down Expand Up @@ -70,8 +70,8 @@ function SelectionToolbar({reportID, transactions, reportActions}: SelectionTool
const {isDelegateAccessRestricted} = useDelegateNoAccessState();
const {showDelegateNoAccessModal} = useDelegateNoAccessActions();

const {selectedTransactionIDs} = useSearchStateContext();
const {setSelectedTransactions, clearSelectedTransactions} = useSearchActionsContext();
const {selectedTransactionIDs} = useSearchSelectionContext();
const {setSelectedTransactions, clearSelectedTransactions} = useSearchSelectionActions();

useFilterSelectedTransactions(transactions, reportID);

Expand Down Expand Up @@ -355,8 +355,8 @@ function SelectionToolbar({reportID, transactions, reportActions}: SelectionTool
}

function SelectionToolbarGate({reportID, transactions, reportActions}: SelectionToolbarProps) {
const {selectedTransactionIDs, currentSelectedTransactionReportID} = useSearchStateContext();
const {clearSelectedTransactions, setCurrentSelectedTransactionReportID} = useSearchActionsContext();
const {selectedTransactionIDs, currentSelectedTransactionReportID} = useSearchSelectionContext();
const {clearSelectedTransactions, setCurrentSelectedTransactionReportID} = useSearchSelectionActions();
const isMobileSelectionModeEnabled = useMobileSelectionMode();

useFocusEffect(() => {
Expand Down
7 changes: 4 additions & 3 deletions src/components/Navigation/SearchSidebar.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type {ParamListBase} from '@react-navigation/native';
import React, {useEffect} from 'react';
import {View} from 'react-native';
import {useSearchActionsContext, useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchQueryContext, useSearchResultsActions, useSearchResultsContext} from '@components/Search/SearchContext';
import useLoadingBarVisibility from '@hooks/useLoadingBarVisibility';
import useLocalize from '@hooks/useLocalize';
import useNetwork from '@hooks/useNetwork';
Expand All @@ -24,8 +24,9 @@ function SearchSidebar({state}: SearchSidebarProps) {
const {shouldUseNarrowLayout} = useResponsiveLayout();

const route = state.routes.at(-1);
const {lastSearchType, currentSearchResults, currentSearchQueryJSON} = useSearchStateContext();
const {setLastSearchType} = useSearchActionsContext();
const {lastSearchType, currentSearchResults} = useSearchResultsContext();
const {currentSearchQueryJSON} = useSearchQueryContext();
const {setLastSearchType} = useSearchResultsActions();

const searchType = currentSearchResults?.search?.type;
const isSearchLoading = currentSearchResults?.search?.isLoading;
Expand Down
4 changes: 2 additions & 2 deletions src/components/ReportActionItem/MoneyRequestView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {ModalActions} from '@components/Modal/Global/ModalContext';
import OfflineWithFeedback from '@components/OfflineWithFeedback';
import {usePersonalDetails, usePolicyCategories, usePolicyTags} from '@components/OnyxListItemProvider';
import ReportActionsSkeletonView from '@components/ReportActionsSkeletonView';
import {useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchResultsContext} from '@components/Search/SearchContext';
import Switch from '@components/Switch';
import Text from '@components/Text';
import UserPills from '@components/UserPills';
Expand Down Expand Up @@ -188,7 +188,7 @@ function MoneyRequestView({
const {showConfirmModal} = useConfirmModal();
const [lastVisitedPath] = useOnyx(ONYXKEYS.LAST_VISITED_PATH);

const {currentSearchResults} = useSearchStateContext();
const {currentSearchResults} = useSearchResultsContext();
const reportAttributes = useReportAttributes();

// When this component is used when merging from the search page, we might not have the parent report stored in the main collection
Expand Down
6 changes: 3 additions & 3 deletions src/components/Search/FilterDropdowns/SortByPopup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type {OnyxEntry} from 'react-native-onyx';
import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
import ListFilterWrapper from '@components/Search/FilterComponents/ListFilterViewWrapper';
import type {SingleSelectItem} from '@components/Search/FilterComponents/SingleSelect';
import {useSearchActionsContext, useSearchStateContext} from '@components/Search/SearchContext';
import {useSearchResultsContext, useSearchSelectionActions} from '@components/Search/SearchContext';
import type {SearchColumnType, SearchGroupBy, SearchQueryJSON} from '@components/Search/types';
import SelectionList from '@components/SelectionList';
import SingleSelectListItem from '@components/SelectionList/ListItem/SingleSelectListItem';
Expand Down Expand Up @@ -40,8 +40,8 @@ function SortByPopup({searchResults, queryJSON, groupBy, onSort, onSortOrderPres
const {translate} = useLocalize();
const styles = useThemeStyles();
const {accountID} = useCurrentUserPersonalDetails();
const {shouldUseLiveData} = useSearchStateContext();
const {clearSelectedTransactions} = useSearchActionsContext();
const {shouldUseLiveData} = useSearchResultsContext();
const {clearSelectedTransactions} = useSearchSelectionActions();

const [visibleColumns] = useOnyx(ONYXKEYS.FORMS.SEARCH_ADVANCED_FILTERS_FORM, {selector: columnsSelector});

Expand Down
4 changes: 2 additions & 2 deletions src/components/Search/FilterDropdowns/SortOrderPopup.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import {useSearchActionsContext} from '@components/Search/SearchContext';
import {useSearchSelectionActions} from '@components/Search/SearchContext';
import type {SearchQueryJSON, SortOrder} from '@components/Search/types';
import useLocalize from '@hooks/useLocalize';
import {close} from '@libs/actions/Modal';
Expand All @@ -17,7 +17,7 @@ type SortOrderPopupProps = {

function SortOrderPopup({queryJSON, onSort, onBackButtonPress, closeOverlay}: SortOrderPopupProps) {
const {translate} = useLocalize();
const {clearSelectedTransactions} = useSearchActionsContext();
const {clearSelectedTransactions} = useSearchSelectionActions();

const onSortChange = (sortOrder: SortOrder) => {
clearSelectedTransactions();
Expand Down
Loading
Loading