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;