@@ -24,6 +24,7 @@ import type {BaseTextInputRef} from '@components/TextInput/BaseTextInput/types';
2424import useConfirmModal from '@hooks/useConfirmModal' ;
2525import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails' ;
2626import useDebouncedAccessibilityAnnouncement from '@hooks/useDebouncedAccessibilityAnnouncement' ;
27+ import useDebouncedValue from '@hooks/useDebouncedValue' ;
2728import useFilteredSelection from '@hooks/useFilteredSelection' ;
2829import { useMemoizedLazyExpensifyIcons , useMemoizedLazyIllustrations } from '@hooks/useLazyAsset' ;
2930import useLocalize from '@hooks/useLocalize' ;
@@ -618,9 +619,12 @@ function WorkspaceMembersPage({personalDetails, route, policy}: WorkspaceMembers
618619 const isPendingAddOrDelete =
619620 isOffline && data ?. some ( ( member ) => member . pendingAction === CONST . RED_BRICK_ROAD_PENDING_ACTION . DELETE || member . pendingAction === CONST . RED_BRICK_ROAD_PENDING_ACTION . ADD ) ;
620621 const shouldShowSearchBar = data . length > CONST . SEARCH_ITEM_LIMIT ;
621- const shouldShowEmptySearchMessage = ! ! shouldShowSearchBar && inputValue . length !== 0 && filteredData . length === 0 ;
622+ const debouncedFilteredData = useDebouncedValue ( filteredData , CONST . TIMING . SEARCH_OPTION_LIST_DEBOUNCE_TIME ) ;
623+ const hasNoFilteredMembers = filteredData . length === 0 ;
624+ const hasNoDebouncedFilteredMembers = debouncedFilteredData ?. length === 0 ;
625+ const shouldShowEmptySearchMessage = ! ! shouldShowSearchBar && inputValue . length !== 0 && hasNoFilteredMembers ;
622626 const shouldShowRoleFilter = data . length > 0 ;
623- const shouldShowRoleFilterEmptyState = shouldShowRoleFilter && ! ! selectedRoleFilter && inputValue . length === 0 && filteredData . length === 0 ;
627+ const shouldShowRoleFilterEmptyState = shouldShowRoleFilter && ! ! selectedRoleFilter && inputValue . length === 0 && hasNoFilteredMembers && hasNoDebouncedFilteredMembers ;
624628 const noResultsMessage = translate ( 'common.noResultsFoundMatching' , inputValue ) ;
625629
626630 // SearchBar's built-in empty state also controls screen-reader announcements.
@@ -1002,7 +1006,6 @@ function WorkspaceMembersPage({personalDetails, route, policy}: WorkspaceMembers
10021006 shouldShowLoadingPlaceholder = { isLoading }
10031007 onDismissError = { dismissError }
10041008 shouldShowListEmptyContent = { false }
1005- shouldShowEmptyStateImmediately = { shouldShowRoleFilterEmptyState }
10061009 showScrollIndicator = { false }
10071010 shouldUseUserSkeletonView
10081011 shouldHeaderBeInsideList
0 commit comments