Skip to content

Commit 17cae11

Browse files
authored
Merge pull request #52009 from huult/51310-fix-emoji-picker-empty-categories-on-search
fix empty categories from briefly displaying when search begins
2 parents c658375 + 3a43cb9 commit 17cae11

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

src/components/EmojiPicker/EmojiPickerMenu/index.native.tsx

+16-12
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import type {ListRenderItem} from '@shopify/flash-list';
22
import lodashDebounce from 'lodash/debounce';
33
import React, {useCallback} from 'react';
44
import type {ForwardedRef} from 'react';
5-
import {View} from 'react-native';
5+
import {InteractionManager, View} from 'react-native';
6+
import type {Emoji} from '@assets/emojis/types';
67
import EmojiPickerMenuItem from '@components/EmojiPicker/EmojiPickerMenuItem';
78
import Text from '@components/Text';
89
import TextInput from '@components/TextInput';
@@ -43,25 +44,28 @@ function EmojiPickerMenu({onEmojiSelected, activeEmoji}: EmojiPickerMenuProps, r
4344
} = useEmojiPickerMenu();
4445
const StyleUtils = useStyleUtils();
4546

47+
const updateEmojiList = (emojiData: EmojiUtils.EmojiPickerList | Emoji[], headerData: number[] = []) => {
48+
setFilteredEmojis(emojiData);
49+
setHeaderIndices(headerData);
50+
51+
InteractionManager.runAfterInteractions(() => {
52+
requestAnimationFrame(() => {
53+
emojiListRef.current?.scrollToOffset({offset: 0, animated: false});
54+
});
55+
});
56+
};
57+
4658
/**
4759
* Filter the entire list of emojis to only emojis that have the search term in their keywords
4860
*/
4961
const filterEmojis = lodashDebounce((searchTerm: string) => {
5062
const [normalizedSearchTerm, newFilteredEmojiList] = suggestEmojis(searchTerm);
5163

52-
if (emojiListRef.current) {
53-
emojiListRef.current.scrollToOffset({offset: 0, animated: false});
54-
}
55-
5664
if (normalizedSearchTerm === '') {
57-
setFilteredEmojis(allEmojis);
58-
setHeaderIndices(headerRowIndices);
59-
60-
return;
65+
updateEmojiList(allEmojis, headerRowIndices);
66+
} else {
67+
updateEmojiList(newFilteredEmojiList ?? [], []);
6168
}
62-
63-
setFilteredEmojis(newFilteredEmojiList ?? []);
64-
setHeaderIndices([]);
6569
}, 300);
6670

6771
const scrollToHeader = (headerIndex: number) => {

0 commit comments

Comments
 (0)