diff --git a/src/CONST.ts b/src/CONST.ts index 2b85bcb2c326..eba68999cc39 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -879,7 +879,7 @@ const CONST = { }, TIMING: { CALCULATE_MOST_RECENT_LAST_MODIFIED_ACTION: 'calc_most_recent_last_modified_action', - SEARCH_RENDER: 'search_render', + CHAT_FINDER_RENDER: 'search_render', CHAT_RENDER: 'chat_render', OPEN_REPORT: 'open_report', HOMEPAGE_INITIAL_RENDER: 'homepage_initial_render', diff --git a/src/ROUTES.ts b/src/ROUTES.ts index ec2bf11957e1..59d2cd797f73 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -28,7 +28,7 @@ const ROUTES = { route: 'flag/:reportID/:reportActionID', getRoute: (reportID: string, reportActionID: string) => `flag/${reportID}/${reportActionID}` as const, }, - SEARCH: 'search', + CHAT_FINDER: 'chat-finder', DETAILS: { route: 'details', getRoute: (login: string) => `details?login=${encodeURIComponent(login)}` as const, diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 96372d5bbabb..5ff8b272e56f 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -95,7 +95,7 @@ const SCREENS = { ROOT: 'SaveTheWorld_Root', }, LEFT_MODAL: { - SEARCH: 'Search', + CHAT_FINDER: 'ChatFinder', WORKSPACE_SWITCHER: 'WorkspaceSwitcher', }, WORKSPACE_SWITCHER: { @@ -319,7 +319,7 @@ const SCREENS = { }, ROOM_MEMBERS_ROOT: 'RoomMembers_Root', ROOM_INVITE_ROOT: 'RoomInvite_Root', - SEARCH_ROOT: 'Search_Root', + CHAT_FINDER_ROOT: 'ChatFinder_Root', FLAG_COMMENT_ROOT: 'FlagComment_Root', REIMBURSEMENT_ACCOUNT: 'ReimbursementAccount', GET_ASSISTANCE: 'GetAssistance', diff --git a/src/libs/E2E/reactNativeLaunchingTest.ts b/src/libs/E2E/reactNativeLaunchingTest.ts index 776e3de74f06..9d5b0be0d2e7 100644 --- a/src/libs/E2E/reactNativeLaunchingTest.ts +++ b/src/libs/E2E/reactNativeLaunchingTest.ts @@ -35,7 +35,7 @@ if (!appInstanceId) { // import your test here, define its name and config first in e2e/config.js const tests: Tests = { [E2EConfig.TEST_NAMES.AppStartTime]: require('./tests/appStartTimeTest.e2e').default, - [E2EConfig.TEST_NAMES.OpenSearchPage]: require('./tests/openSearchPageTest.e2e').default, + [E2EConfig.TEST_NAMES.OpenChatFinderPage]: require('./tests/openChatFinderPageTest.e2e').default, [E2EConfig.TEST_NAMES.ChatOpening]: require('./tests/chatOpeningTest.e2e').default, [E2EConfig.TEST_NAMES.ReportTyping]: require('./tests/reportTypingTest.e2e').default, [E2EConfig.TEST_NAMES.Linking]: require('./tests/linkingTest.e2e').default, diff --git a/src/libs/E2E/tests/openSearchPageTest.e2e.ts b/src/libs/E2E/tests/openChatFinderPageTest.e2e.ts similarity index 82% rename from src/libs/E2E/tests/openSearchPageTest.e2e.ts rename to src/libs/E2E/tests/openChatFinderPageTest.e2e.ts index 86da851396f6..9d2b117a7044 100644 --- a/src/libs/E2E/tests/openSearchPageTest.e2e.ts +++ b/src/libs/E2E/tests/openChatFinderPageTest.e2e.ts @@ -9,7 +9,7 @@ import ROUTES from '@src/ROUTES'; const test = () => { // check for login (if already logged in the action will simply resolve) - console.debug('[E2E] Logging in for search'); + console.debug('[E2E] Logging in for chat finder'); E2ELogin().then((neededLogin: boolean): Promise | undefined => { if (neededLogin) { @@ -19,24 +19,24 @@ const test = () => { ); } - console.debug('[E2E] Logged in, getting search metrics and submitting them…'); + console.debug('[E2E] Logged in, getting chat finder metrics and submitting them…'); Performance.subscribeToMeasurements((entry) => { if (entry.name === CONST.TIMING.SIDEBAR_LOADED) { - console.debug(`[E2E] Sidebar loaded, navigating to search route…`); - Navigation.navigate(ROUTES.SEARCH); + console.debug(`[E2E] Sidebar loaded, navigating to chat finder route…`); + Navigation.navigate(ROUTES.CHAT_FINDER); return; } console.debug(`[E2E] Entry: ${JSON.stringify(entry)}`); - if (entry.name !== CONST.TIMING.SEARCH_RENDER) { + if (entry.name !== CONST.TIMING.CHAT_FINDER_RENDER) { return; } console.debug(`[E2E] Submitting!`); E2EClient.submitTestResults({ branch: Config.E2E_BRANCH, - name: 'Open Search Page TTI', + name: 'Open Chat Finder Page TTI', duration: entry.duration, }) .then(() => { diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.tsx b/src/libs/Navigation/AppNavigator/AuthScreens.tsx index fde0202d3d2f..9157d7486c9e 100644 --- a/src/libs/Navigation/AppNavigator/AuthScreens.tsx +++ b/src/libs/Navigation/AppNavigator/AuthScreens.tsx @@ -238,7 +238,7 @@ function AuthScreens({session, lastOpenedPublicRoomID, initialLastUpdateIDApplie const unsubscribeSearchShortcut = KeyboardShortcut.subscribe( searchShortcutConfig.shortcutKey, () => { - Modal.close(Session.checkIfActionIsAllowed(() => Navigation.navigate(ROUTES.SEARCH))); + Modal.close(Session.checkIfActionIsAllowed(() => Navigation.navigate(ROUTES.CHAT_FINDER))); }, shortcutsOverviewShortcutConfig.descriptionKey, shortcutsOverviewShortcutConfig.modifiers, diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 7380bf102331..3b295f652b88 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -4,6 +4,7 @@ import {createStackNavigator} from '@react-navigation/stack'; import React from 'react'; import type { AddPersonalBankAccountNavigatorParamList, + ChatFinderNavigatorParamList, DetailsNavigatorParamList, EditRequestNavigatorParamList, EnablePaymentsNavigatorParamList, @@ -22,7 +23,6 @@ import type { ReportSettingsNavigatorParamList, RoomInviteNavigatorParamList, RoomMembersNavigatorParamList, - SearchNavigatorParamList, SettingsNavigatorParamList, SignInNavigatorParamList, SplitDetailsNavigatorParamList, @@ -147,8 +147,8 @@ const RoomInviteModalStackNavigator = createModalStackNavigator require('../../../../pages/RoomInvitePage').default as React.ComponentType, }); -const SearchModalStackNavigator = createModalStackNavigator({ - [SCREENS.SEARCH_ROOT]: () => require('../../../../pages/SearchPage').default as React.ComponentType, +const ChatFinderModalStackNavigator = createModalStackNavigator({ + [SCREENS.CHAT_FINDER_ROOT]: () => require('../../../../pages/ChatFinderPage').default as React.ComponentType, }); const NewChatModalStackNavigator = createModalStackNavigator({ @@ -342,7 +342,7 @@ export { ReportDescriptionModalStackNavigator, RoomInviteModalStackNavigator, RoomMembersModalStackNavigator, - SearchModalStackNavigator, + ChatFinderModalStackNavigator, SettingsModalStackNavigator, SignInModalStackNavigator, SplitDetailsModalStackNavigator, diff --git a/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx b/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx index 8f76d8fbdd7b..159430a66a43 100644 --- a/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx +++ b/src/libs/Navigation/AppNavigator/Navigators/LeftModalNavigator.tsx @@ -32,8 +32,8 @@ function LeftModalNavigator({navigation}: LeftModalNavigatorProps) { Navigation.navigate(ROUTES.SEARCH))} + onPress={Session.checkIfActionIsAllowed(() => Navigation.navigate(ROUTES.CHAT_FINDER))} > ['config'] = { [SCREENS.NOT_FOUND]: '*', [NAVIGATORS.LEFT_MODAL_NAVIGATOR]: { screens: { - [SCREENS.LEFT_MODAL.SEARCH]: { + [SCREENS.LEFT_MODAL.CHAT_FINDER]: { screens: { - [SCREENS.SEARCH_ROOT]: ROUTES.SEARCH, + [SCREENS.CHAT_FINDER_ROOT]: ROUTES.CHAT_FINDER, }, }, [SCREENS.LEFT_MODAL.WORKSPACE_SWITCHER]: { diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index 8273278f971e..61cc5e5e9c3a 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -300,8 +300,8 @@ type NewChatNavigatorParamList = { }; }; -type SearchNavigatorParamList = { - [SCREENS.SEARCH_ROOT]: undefined; +type ChatFinderNavigatorParamList = { + [SCREENS.CHAT_FINDER_ROOT]: undefined; }; type DetailsNavigatorParamList = { @@ -614,7 +614,7 @@ type PrivateNotesNavigatorParamList = { }; type LeftModalNavigatorParamList = { - [SCREENS.LEFT_MODAL.SEARCH]: NavigatorScreenParams; + [SCREENS.LEFT_MODAL.CHAT_FINDER]: NavigatorScreenParams; [SCREENS.LEFT_MODAL.WORKSPACE_SWITCHER]: NavigatorScreenParams; }; @@ -790,7 +790,7 @@ type AuthScreensParamList = SharedScreensParamList & { }; }; -type RootStackParamList = PublicScreensParamList & AuthScreensParamList & SearchNavigatorParamList; +type RootStackParamList = PublicScreensParamList & AuthScreensParamList & ChatFinderNavigatorParamList; type BottomTabName = keyof BottomTabNavigatorParamList; @@ -834,7 +834,7 @@ export type { ParticipantsNavigatorParamList, RoomMembersNavigatorParamList, RoomInviteNavigatorParamList, - SearchNavigatorParamList, + ChatFinderNavigatorParamList, NewChatNavigatorParamList, NewTaskNavigatorParamList, TeachersUniteNavigatorParamList, diff --git a/src/pages/SearchPage/SearchPageFooter.tsx b/src/pages/ChatFinderPage/ChatFinderPageFooter.tsx similarity index 64% rename from src/pages/SearchPage/SearchPageFooter.tsx rename to src/pages/ChatFinderPage/ChatFinderPageFooter.tsx index a9369ff9f0b7..4c006abacfc7 100644 --- a/src/pages/SearchPage/SearchPageFooter.tsx +++ b/src/pages/ChatFinderPage/ChatFinderPageFooter.tsx @@ -2,10 +2,10 @@ import React from 'react'; import ReferralProgramCTA from '@components/ReferralProgramCTA'; import CONST from '@src/CONST'; -function SearchPageFooter() { +function ChatFinderPageFooter() { return ; } -SearchPageFooter.displayName = 'SearchPageFooter'; +ChatFinderPageFooter.displayName = 'ChatFinderPageFooter'; -export default SearchPageFooter; +export default ChatFinderPageFooter; diff --git a/src/pages/SearchPage/index.tsx b/src/pages/ChatFinderPage/index.tsx similarity index 85% rename from src/pages/SearchPage/index.tsx rename to src/pages/ChatFinderPage/index.tsx index d79c60ff4f45..f992fa37d8c5 100644 --- a/src/pages/SearchPage/index.tsx +++ b/src/pages/ChatFinderPage/index.tsx @@ -25,9 +25,9 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type SCREENS from '@src/SCREENS'; import type * as OnyxTypes from '@src/types/onyx'; -import SearchPageFooter from './SearchPageFooter'; +import ChatFinderPageFooter from './ChatFinderPageFooter'; -type SearchPageOnyxProps = { +type ChatFinderPageOnyxProps = { /** Beta features list */ betas: OnyxEntry; @@ -35,23 +35,23 @@ type SearchPageOnyxProps = { isSearchingForReports: OnyxEntry; }; -type SearchPageProps = SearchPageOnyxProps & StackScreenProps; +type ChatFinderPageProps = ChatFinderPageOnyxProps & StackScreenProps; -type SearchPageSectionItem = { +type ChatFinderPageSectionItem = { data: OptionData[]; shouldShow: boolean; }; -type SearchPageSectionList = SearchPageSectionItem[]; +type ChatFinderPageSectionList = ChatFinderPageSectionItem[]; const setPerformanceTimersEnd = () => { - Timing.end(CONST.TIMING.SEARCH_RENDER); - Performance.markEnd(CONST.TIMING.SEARCH_RENDER); + Timing.end(CONST.TIMING.CHAT_FINDER_RENDER); + Performance.markEnd(CONST.TIMING.CHAT_FINDER_RENDER); }; -const SerachPageFooterInstance = ; +const ChatFinderPageFooterInstance = ; -function SearchPage({betas, isSearchingForReports, navigation}: SearchPageProps) { +function ChatFinderPage({betas, isSearchingForReports, navigation}: ChatFinderPageProps) { const [isScreenTransitionEnd, setIsScreenTransitionEnd] = useState(false); const themeStyles = useThemeStyles(); const {translate} = useLocalize(); @@ -65,8 +65,8 @@ function SearchPage({betas, isSearchingForReports, navigation}: SearchPageProps) const [searchValue, debouncedSearchValue, setSearchValue] = useDebouncedState(''); useEffect(() => { - Timing.start(CONST.TIMING.SEARCH_RENDER); - Performance.markStart(CONST.TIMING.SEARCH_RENDER); + Timing.start(CONST.TIMING.CHAT_FINDER_RENDER); + Performance.markStart(CONST.TIMING.CHAT_FINDER_RENDER); }, []); useEffect(() => { @@ -113,8 +113,8 @@ function SearchPage({betas, isSearchingForReports, navigation}: SearchPageProps) const {recentReports, personalDetails: localPersonalDetails, userToInvite, headerMessage} = debouncedSearchValue.trim() !== '' ? filteredOptions : searchOptions; - const sections = useMemo((): SearchPageSectionList => { - const newSections: SearchPageSectionList = []; + const sections = useMemo((): ChatFinderPageSectionList => { + const newSections: ChatFinderPageSectionList = []; if (recentReports?.length > 0) { newSections.push({ @@ -162,12 +162,13 @@ function SearchPage({betas, isSearchingForReports, navigation}: SearchPageProps) return ( @@ -183,16 +184,16 @@ function SearchPage({betas, isSearchingForReports, navigation}: SearchPageProps) onLayout={setPerformanceTimersEnd} onSelectRow={selectReport} showLoadingPlaceholder={!areOptionsInitialized || !isScreenTransitionEnd} - footerContent={!isDismissed && SerachPageFooterInstance} + footerContent={!isDismissed && ChatFinderPageFooterInstance} isLoadingNewOptions={isSearchingForReports ?? undefined} /> ); } -SearchPage.displayName = 'SearchPage'; +ChatFinderPage.displayName = 'ChatFinderPage'; -export default withOnyx({ +export default withOnyx({ betas: { key: ONYXKEYS.BETAS, }, @@ -200,4 +201,4 @@ export default withOnyx({ key: ONYXKEYS.IS_SEARCHING_FOR_REPORTS, initWithStoredValues: false, }, -})(SearchPage); +})(ChatFinderPage); diff --git a/tests/e2e/config.ts b/tests/e2e/config.ts index d6d097b6c346..6fe88d45c2e9 100644 --- a/tests/e2e/config.ts +++ b/tests/e2e/config.ts @@ -4,7 +4,7 @@ const OUTPUT_DIR = process.env.WORKING_DIRECTORY || './tests/e2e/results'; // add your test name here … const TEST_NAMES = { AppStartTime: 'App start time', - OpenSearchPage: 'Open search page TTI', + OpenChatFinderPage: 'Open chat finder page TTI', ReportTyping: 'Report typing', ChatOpening: 'Chat opening', Linking: 'Linking', @@ -71,8 +71,8 @@ export default { // ... any additional config you might need }, - [TEST_NAMES.OpenSearchPage]: { - name: TEST_NAMES.OpenSearchPage, + [TEST_NAMES.OpenChatFinderPage]: { + name: TEST_NAMES.OpenChatFinderPage, }, // TODO: Fix text and enable again // [TEST_NAMES.ReportTyping]: { diff --git a/tests/perf-test/SearchPage.perf-test.tsx b/tests/perf-test/SearchPage.perf-test.tsx index 33ee900f8b6c..6ccecf0f735b 100644 --- a/tests/perf-test/SearchPage.perf-test.tsx +++ b/tests/perf-test/SearchPage.perf-test.tsx @@ -13,7 +13,7 @@ import {KeyboardStateProvider} from '@components/withKeyboardState'; import type {WithNavigationFocusProps} from '@components/withNavigationFocus'; import type {RootStackParamList} from '@libs/Navigation/types'; import {createOptionList} from '@libs/OptionsListUtils'; -import SearchPage from '@pages/SearchPage'; +import ChatFinderPage from '@pages/ChatFinderPage'; import ComposeProviders from '@src/components/ComposeProviders'; import OnyxProvider from '@src/components/OnyxProvider'; import CONST from '@src/CONST'; @@ -126,16 +126,16 @@ afterEach(() => { PusherHelper.teardown(); }); -type SearchPageProps = StackScreenProps & { +type ChatFinderPageProps = StackScreenProps & { betas: OnyxEntry; reports: OnyxCollection; isSearchingForReports: OnyxEntry; }; -function SearchPageWrapper(args: SearchPageProps) { +function ChatFinderPageWrapper(args: ChatFinderPageProps) { return ( - ({options: mockedOptions, initializeOptions: () => {}, areOptionsInitialized: true}), [])}> - { const {addListener} = TestHelper.createAddListenerMock(); const scenario = async () => { - await screen.findByTestId('SearchPage'); + await screen.findByTestId('ChatFinderPage'); }; const navigation = {addListener}; @@ -178,7 +178,7 @@ test('[Search Page] should render list with cached options', async () => { }), ) // @ts-expect-error TODO: Remove this once TestHelper (https://github.com/Expensify/App/issues/25318) is migrated to TypeScript. - .then(() => measurePerformance(, {scenario})) + .then(() => measurePerformance(, {scenario})) ); }); @@ -186,7 +186,7 @@ test('[Search Page] should interact when text input changes', async () => { const {addListener} = TestHelper.createAddListenerMock(); const scenario = async () => { - await screen.findByTestId('SearchPage'); + await screen.findByTestId('ChatFinderPage'); const input = screen.getByTestId('selection-list-text-input'); fireEvent.changeText(input, 'Email Four'); @@ -207,7 +207,7 @@ test('[Search Page] should interact when text input changes', async () => { }), ) // @ts-expect-error TODO: Remove this once TestHelper (https://github.com/Expensify/App/issues/25318) is migrated to TypeScript. - .then(() => measurePerformance(, {scenario})) + .then(() => measurePerformance(, {scenario})) ); }); @@ -216,7 +216,7 @@ test.skip('[Search Page] should render selection list', async () => { const smallMockedPersonalDetails = getMockedPersonalDetails(5); const scenario = async () => { - await screen.findByTestId('SearchPage'); + await screen.findByTestId('ChatFinderPage'); await waitFor(triggerTransitionEnd as Awaited<() => Promise>); await screen.findByTestId('selection-list'); await screen.findByText(smallMockedPersonalDetails['1'].login as TextMatch); @@ -236,7 +236,7 @@ test.skip('[Search Page] should render selection list', async () => { }), ) // @ts-expect-error TODO: Remove this once TestHelper (https://github.com/Expensify/App/issues/25318) is migrated to TypeScript. - .then(() => measurePerformance(, {scenario})) + .then(() => measurePerformance(, {scenario})) ); }); @@ -244,7 +244,7 @@ test('[Search Page] should search in selection list', async () => { const {triggerTransitionEnd, addListener} = TestHelper.createAddListenerMock(); const scenario = async () => { - await screen.findByTestId('SearchPage'); + await screen.findByTestId('ChatFinderPage'); await waitFor(triggerTransitionEnd as Awaited<() => Promise>); const input = screen.getByTestId('selection-list-text-input'); @@ -267,7 +267,7 @@ test('[Search Page] should search in selection list', async () => { }), ) // @ts-expect-error TODO: Remove this once TestHelper (https://github.com/Expensify/App/issues/25318) is migrated to TypeScript. - .then(() => measurePerformance(, {scenario})) + .then(() => measurePerformance(, {scenario})) ); }); @@ -275,7 +275,7 @@ test('[Search Page] should click on list item', async () => { const {triggerTransitionEnd, addListener} = TestHelper.createAddListenerMock(); const scenario = async () => { - await screen.findByTestId('SearchPage'); + await screen.findByTestId('ChatFinderPage'); const input = screen.getByTestId('selection-list-text-input'); await waitFor(triggerTransitionEnd as Awaited<() => Promise>); @@ -298,6 +298,6 @@ test('[Search Page] should click on list item', async () => { }), ) // @ts-expect-error TODO: Remove this once TestHelper (https://github.com/Expensify/App/issues/25318) is migrated to TypeScript. - .then(() => measurePerformance(, {scenario})) + .then(() => measurePerformance(, {scenario})) ); });