Skip to content
13 changes: 13 additions & 0 deletions app/views/RoomsListView/hooks/useSearch.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { useCallback, useReducer } from 'react';
import { AccessibilityInfo } from 'react-native';

import { type IRoomItem } from '../../../containers/RoomItem/interfaces';
import { search as searchLib } from '../../../lib/methods/search';
import { useDebounce } from '../../../lib/methods/helpers/debounce';
import i18n from '../../../i18n';

interface SearchState {
searchEnabled: boolean;
Expand Down Expand Up @@ -58,11 +60,22 @@ export const useSearch = () => {

const [state, dispatch] = useReducer(searchReducer, initialState);

const announceSearchResultsForAccessibility = (count: number) => {
if (count < 1) {
AccessibilityInfo.announceForAccessibility(i18n.t('No_results_found'));
return;
}

const message = count === 1 ? i18n.t('One_result_found') : i18n.t('Search_Results_found', { count });
AccessibilityInfo.announceForAccessibility(message);
};

const search = useDebounce(async (text: string) => {
if (!state.searchEnabled) return;
dispatch({ type: 'SET_SEARCHING' });
const result = await searchLib({ text });
dispatch({ type: 'SEARCH_SUCCESS', payload: result as IRoomItem[] });
announceSearchResultsForAccessibility(result.length);
}, 500);

const startSearch = useCallback(() => {
Expand Down
Loading