diff --git a/src/components/Search/FilterComponents/InSelector.tsx b/src/components/Search/FilterComponents/InSelector.tsx index dec518b33ab4..51479cb7b82e 100644 --- a/src/components/Search/FilterComponents/InSelector.tsx +++ b/src/components/Search/FilterComponents/InSelector.tsx @@ -13,7 +13,7 @@ import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import usePrivateIsArchivedMap from '@hooks/usePrivateIsArchivedMap'; import useReportAttributes from '@hooks/useReportAttributes'; -import useSortedActions from '@hooks/useSortedActions'; +import useSortedReportActionsData from '@hooks/useSortedReportActionsData'; import {searchInServer} from '@libs/actions/Report'; import {canUseTouchScreen} from '@libs/DeviceCapabilities'; @@ -63,7 +63,8 @@ function InSelector({value = [], selectionListTextInputStyle, selectionListStyle const [countryCode = CONST.DEFAULT_COUNTRY_CODE] = useOnyx(ONYXKEYS.COUNTRY_CODE); const [loginList] = useOnyx(ONYXKEYS.LOGINS, {selector: expensifyLoginsSelector}); const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); + const sortedActions = sortedReportActionsData?.sortedActions; const currentUserPersonalDetails = useCurrentUserPersonalDetails(); const currentUserAccountID = currentUserPersonalDetails.accountID; diff --git a/src/components/Search/SearchAutocompleteList.tsx b/src/components/Search/SearchAutocompleteList.tsx index d11c30dc45d2..2c94670d15a7 100644 --- a/src/components/Search/SearchAutocompleteList.tsx +++ b/src/components/Search/SearchAutocompleteList.tsx @@ -19,7 +19,7 @@ import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useReportAttributes from '@hooks/useReportAttributes'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; -import useSortedActions from '@hooks/useSortedActions'; +import useSortedReportActionsData from '@hooks/useSortedReportActionsData'; import useThemeStyles from '@hooks/useThemeStyles'; import FS from '@libs/Fullstory'; @@ -195,7 +195,8 @@ function SearchAutocompleteList({ const [loginList] = useOnyx(ONYXKEYS.LOGINS, {selector: expensifyLoginsSelector}); const [policies = getEmptyObject>>()] = useOnyx(ONYXKEYS.COLLECTION.POLICY); const [visibleReportActionsData] = useOnyx(ONYXKEYS.DERIVED.VISIBLE_REPORT_ACTIONS); - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); + const sortedActions = sortedReportActionsData?.sortedActions; const personalDetails = usePersonalDetails(); const [reports] = useOnyx(ONYXKEYS.COLLECTION.REPORT); const [personalAndWorkspaceCards] = useOnyx(ONYXKEYS.DERIVED.PERSONAL_AND_WORKSPACE_CARD_LIST); diff --git a/src/components/Search/SearchRouter/SearchRouter.tsx b/src/components/Search/SearchRouter/SearchRouter.tsx index a8fff8f01f26..a4e658bdbe9a 100644 --- a/src/components/Search/SearchRouter/SearchRouter.tsx +++ b/src/components/Search/SearchRouter/SearchRouter.tsx @@ -23,7 +23,7 @@ import useReportAttributes from '@hooks/useReportAttributes'; import useReportOrReportDraft from '@hooks/useReportOrReportDraft'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useRootNavigationState from '@hooks/useRootNavigationState'; -import useSortedActions from '@hooks/useSortedActions'; +import useSortedReportActionsData from '@hooks/useSortedReportActionsData'; import useThemeStyles from '@hooks/useThemeStyles'; import {scrollToRight} from '@libs/InputUtils'; @@ -103,7 +103,8 @@ function SearchRouter({onRouterClose, shouldHideInputCaret, isSearchRouterDispla const [searchContext] = useOnyx(ONYXKEYS.SEARCH_CONTEXT); const isSupportalSession = useIsSupportalSession(); const personalDetails = usePersonalDetails(); - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); + const sortedActions = sortedReportActionsData?.sortedActions; const {shouldUseNarrowLayout} = useResponsiveLayout(); const listRef = useRef(null); const expensifyIcons = useMemoizedLazyExpensifyIcons(['MagnifyingGlass', 'ConciergeAvatar']); diff --git a/src/components/Search/SearchRouter/SearchRouterOptionsWarmer.tsx b/src/components/Search/SearchRouter/SearchRouterOptionsWarmer.tsx index 590e8d542345..6b6845d60791 100644 --- a/src/components/Search/SearchRouter/SearchRouterOptionsWarmer.tsx +++ b/src/components/Search/SearchRouter/SearchRouterOptionsWarmer.tsx @@ -1,7 +1,7 @@ import useFilteredOptions from '@hooks/useFilteredOptions'; import useOnyx from '@hooks/useOnyx'; import useReportAttributes from '@hooks/useReportAttributes'; -import useSortedActions from '@hooks/useSortedActions'; +import useSortedReportActionsData from '@hooks/useSortedReportActionsData'; import {Scheduler} from '@libs/Scheduler'; import type {IdleTask} from '@libs/Scheduler'; @@ -35,12 +35,12 @@ function SearchRouterOptionsWarmer({onDone}: SearchRouterOptionsWarmerProps) { const [policies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST); const reportAttributes = useReportAttributes(); - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); const churnVersionRef = useRef(0); useEffect(() => { churnVersionRef.current += 1; - }, [reports, policies, personalDetails, reportAttributes, sortedActions]); + }, [reports, policies, personalDetails, reportAttributes, sortedReportActionsData]); useEffect(() => { let attempts = 0; diff --git a/src/hooks/useAutocompleteSuggestions.ts b/src/hooks/useAutocompleteSuggestions.ts index 247c8bd0256b..3c099e654858 100644 --- a/src/hooks/useAutocompleteSuggestions.ts +++ b/src/hooks/useAutocompleteSuggestions.ts @@ -41,7 +41,7 @@ import useExportedToFilterOptions from './useExportedToFilterOptions'; import useLoadSearchCategoryData from './useLoadSearchCategoryData'; import useLocalize from './useLocalize'; import useOnyx from './useOnyx'; -import useSortedActions from './useSortedActions'; +import useSortedReportActionsData from './useSortedReportActionsData'; type AutocompleteItemData = { filterKey: UserFriendlyKey; @@ -130,7 +130,8 @@ function useAutocompleteSuggestions({ const [allPoliciesTags] = useOnyx(ONYXKEYS.COLLECTION.POLICY_TAGS); const [allRecentTags] = useOnyx(ONYXKEYS.COLLECTION.POLICY_RECENTLY_USED_TAGS); const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST); - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); + const sortedActions = sortedReportActionsData?.sortedActions; const {currencyList} = useCurrencyListState(); const {exportedToFilterOptions} = useExportedToFilterOptions(); const [isTrackIntentUser] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {selector: isTrackIntentUserSelector}); diff --git a/src/hooks/useFilteredOptions.ts b/src/hooks/useFilteredOptions.ts index 6b8f96112e58..f2a605e2357a 100644 --- a/src/hooks/useFilteredOptions.ts +++ b/src/hooks/useFilteredOptions.ts @@ -12,7 +12,7 @@ import useLocalize from './useLocalize'; import useOnyx from './useOnyx'; import usePrivateIsArchivedMap from './usePrivateIsArchivedMap'; import useReportAttributes from './useReportAttributes'; -import useSortedActions from './useSortedActions'; +import useSortedReportActionsData from './useSortedReportActionsData'; type UseFilteredOptionsConfig = { /** Maximum number of recent reports to pre-filter and process (default: 500). */ @@ -96,7 +96,8 @@ function useFilteredOptions(config: UseFilteredOptionsConfig): UseFilteredOption // Sorted report actions from the RAM_ONLY_SORTED_REPORT_ACTIONS derived value; a new reference on // every recompute, so it doubles as the report-actions invalidation signal for the option-list cache. - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); + const sortedActions = sortedReportActionsData?.sortedActions; const {accountID: currentUserAccountID} = useCurrentUserPersonalDetails(); const privateIsArchivedMap = usePrivateIsArchivedMap(); diff --git a/src/hooks/useSearchSelector/base.ts b/src/hooks/useSearchSelector/base.ts index 2785675963b7..54422f02d0dd 100644 --- a/src/hooks/useSearchSelector/base.ts +++ b/src/hooks/useSearchSelector/base.ts @@ -7,7 +7,7 @@ import useDebouncedState from '@hooks/useDebouncedState'; import useFilteredOptions from '@hooks/useFilteredOptions'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; -import useSortedActions from '@hooks/useSortedActions'; +import useSortedReportActionsData from '@hooks/useSortedReportActionsData'; import type {GetOptionsConfig, Option, OptionList, Options, SearchOption} from '@libs/OptionsListUtils'; import {getEmptyOptions, getSearchOptions, getSearchValueForPhoneOrEmail, getValidOptions} from '@libs/OptionsListUtils'; @@ -198,7 +198,8 @@ function useSearchSelectorBase({ const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); const [draftComments] = useOnyx(ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT); const [visibleReportActionsData] = useOnyx(ONYXKEYS.DERIVED.VISIBLE_REPORT_ACTIONS); - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); + const sortedActions = sortedReportActionsData?.sortedActions; const currentUserPersonalDetails = useCurrentUserPersonalDetails(); const currentUserAccountID = currentUserPersonalDetails.accountID; const currentUserEmail = currentUserPersonalDetails.email ?? ''; diff --git a/src/hooks/useSortedActions.ts b/src/hooks/useSortedActions.ts deleted file mode 100644 index f0bd11753f36..000000000000 --- a/src/hooks/useSortedActions.ts +++ /dev/null @@ -1,13 +0,0 @@ -import ONYXKEYS from '@src/ONYXKEYS'; - -import useOnyx from './useOnyx'; - -/** - * Returns `sortedActions` from the RAM_ONLY_SORTED_REPORT_ACTIONS derived value. - */ -function useSortedActions() { - const [sortedReportActions] = useOnyx(ONYXKEYS.DERIVED.RAM_ONLY_SORTED_REPORT_ACTIONS); - return sortedReportActions?.sortedActions; -} - -export default useSortedActions; diff --git a/src/hooks/useSortedReportActionsData.ts b/src/hooks/useSortedReportActionsData.ts new file mode 100644 index 000000000000..fd3949534310 --- /dev/null +++ b/src/hooks/useSortedReportActionsData.ts @@ -0,0 +1,10 @@ +import ONYXKEYS from '@src/ONYXKEYS'; + +import useOnyx from './useOnyx'; + +function useSortedReportActionsData() { + const [sortedReportActionsData] = useOnyx(ONYXKEYS.DERIVED.RAM_ONLY_SORTED_REPORT_ACTIONS); + return sortedReportActionsData; +} + +export default useSortedReportActionsData; diff --git a/src/pages/Share/ShareTab.tsx b/src/pages/Share/ShareTab.tsx index 820571499320..3e0bbafa91a9 100644 --- a/src/pages/Share/ShareTab.tsx +++ b/src/pages/Share/ShareTab.tsx @@ -11,7 +11,7 @@ import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useOnyx from '@hooks/useOnyx'; import useScreenWrapperTransitionStatus from '@hooks/useScreenWrapperTransitionStatus'; -import useSortedActions from '@hooks/useSortedActions'; +import useSortedReportActionsData from '@hooks/useSortedReportActionsData'; import useThemeStyles from '@hooks/useThemeStyles'; import {getOptimisticChatReport, saveReportDraft, searchInServer} from '@libs/actions/Report'; @@ -51,7 +51,8 @@ function ShareTab() { const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); const [draftComments] = useOnyx(ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT); const [visibleReportActionsData] = useOnyx(ONYXKEYS.DERIVED.VISIBLE_REPORT_ACTIONS); - const sortedActions = useSortedActions(); + const sortedReportActionsData = useSortedReportActionsData(); + const sortedActions = sortedReportActionsData?.sortedActions; const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID); const [rules] = useOnyx(ONYXKEYS.COLLECTION.RULE); const currentUserPersonalDetails = useCurrentUserPersonalDetails(); diff --git a/tests/ui/InSelectorTest.tsx b/tests/ui/InSelectorTest.tsx index 8f48040f8353..eda4fccfd67b 100644 --- a/tests/ui/InSelectorTest.tsx +++ b/tests/ui/InSelectorTest.tsx @@ -24,7 +24,7 @@ jest.mock('@hooks/useOnyx', () => jest.fn(() => [undefined])); jest.mock('@hooks/useDebouncedState', () => jest.fn(() => [mockSearchTerm, mockSearchTerm, jest.fn()])); jest.mock('@hooks/useFilteredOptions', () => jest.fn(() => ({options: {recentReports: [], personalDetails: []}, isLoading: false}))); jest.mock('@hooks/useCurrentUserPersonalDetails', () => jest.fn(() => ({email: 'me@expensify.com', accountID: 999}))); -jest.mock('@hooks/useSortedActions', () => jest.fn(() => ({}))); +jest.mock('@hooks/useSortedReportActionsData', () => jest.fn(() => ({}))); jest.mock('@hooks/useReportAttributes', () => jest.fn(() => ({}))); jest.mock('@hooks/usePrivateIsArchivedMap', () => jest.fn(() => ({}))); jest.mock('@hooks/useLocalize', () =>