diff --git a/app/views/RoomsListView/hooks/useSearch.ts b/app/views/RoomsListView/hooks/useSearch.ts index 76a63e7bff4..97c7a0d2a12 100644 --- a/app/views/RoomsListView/hooks/useSearch.ts +++ b/app/views/RoomsListView/hooks/useSearch.ts @@ -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; @@ -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(() => {