import React, { useEffect, useState } from 'react'; import { View, Text, TouchableOpacity, TextInput, FlatList } from 'react-native'; import { orderBy } from 'lodash'; import FormTextInput from '../TextInput/FormTextInput'; import { useTheme } from '../../theme'; import I18n from '../../i18n'; import { CustomIcon } from '../CustomIcon'; import { IEmoji } from '../../definitions'; import shortnameToUnicode from '../../lib/methods/helpers/shortnameToUnicode'; import CustomEmoji from '../EmojiPicker/CustomEmoji'; import database from '../../lib/database'; interface IEmojiSearchbarProps { openEmoji: () => void; onChangeText: (value: string) => void; emojis: IEmoji[]; onEmojiSelected: (emoji: IEmoji) => void; baseUrl: string; } const renderEmoji = (emoji: IEmoji, size: number, baseUrl: string) => { if (emoji.name) { return ; } return {shortnameToUnicode(`:${emoji}:`)}; }; const EmojiSearchbar = React.forwardRef( ({ openEmoji, onChangeText, emojis, onEmojiSelected, baseUrl }, ref) => { console.log('Emojis', emojis); const { colors, theme } = useTheme(); const [searchText, setSearchText] = useState(''); const [frequentlyUsed, setFrequentlyUsed] = useState([]); const getFrequentlyUsedEmojis = async () => { const db = database.active; const frequentlyUsedRecords = await db.get('frequently_used_emojis').query().fetch(); const frequentlyUsedOrdered = orderBy(frequentlyUsedRecords, ['count'], ['desc']); const frequentlyUsedEmojis = frequentlyUsedOrdered.map(item => { if (item.isCustom) { return { name: item.content, extension: item.extension }; } return item.content; }); // @ts-ignore setFrequentlyUsed(frequentlyUsedEmojis); }; useEffect(() => { getFrequentlyUsedEmojis(); }, []); const handleTextChange = (text: string) => { setSearchText(text); onChangeText(text); if (!text) getFrequentlyUsedEmojis(); }; const renderItem = (emoji: IEmoji) => { const emojiSize = 30; return ( onEmojiSelected(emoji)}> {renderEmoji(emoji, emojiSize, baseUrl)} ); }; return ( renderItem(item)} /> handleTextChange('')} iconRight={'search'} /> ); } ); export default EmojiSearchbar;