Emoji Tooltip: Always support English keywords (#1197)
This commit is contained in:
parent
bab7640ac0
commit
839a6107ba
@ -121,6 +121,7 @@ type StateProps = {
|
||||
contentToBeScheduled?: GlobalState['messages']['contentToBeScheduled'];
|
||||
shouldSuggestStickers?: boolean;
|
||||
language: LangCode;
|
||||
baseEmojiKeywords?: Record<string, string[]>;
|
||||
emojiKeywords?: Record<string, string[]>;
|
||||
serverTimeOffset: number;
|
||||
} & Pick<GlobalState, 'connectionState'>;
|
||||
@ -180,6 +181,7 @@ const Composer: FC<OwnProps & StateProps & DispatchProps> = ({
|
||||
contentToBeScheduled,
|
||||
shouldSuggestStickers,
|
||||
language,
|
||||
baseEmojiKeywords,
|
||||
emojiKeywords,
|
||||
serverTimeOffset,
|
||||
recentEmojis,
|
||||
@ -308,6 +310,7 @@ const Composer: FC<OwnProps & StateProps & DispatchProps> = ({
|
||||
recentEmojis,
|
||||
undefined,
|
||||
setHtml,
|
||||
baseEmojiKeywords,
|
||||
emojiKeywords,
|
||||
);
|
||||
|
||||
@ -927,7 +930,8 @@ export default memo(withGlobal<OwnProps>(
|
||||
const messageWithActualBotKeyboard = isChatWithBot && selectNewestMessageWithBotKeyboardButtons(global, chatId);
|
||||
const scheduledIds = selectScheduledIds(global, chatId);
|
||||
const { language } = global.settings.byKey;
|
||||
const emojiKeywords = selectEmojiKeywords(global, language);
|
||||
const baseEmojiKeywords = selectEmojiKeywords(global, 'en');
|
||||
const emojiKeywords = language !== 'en' ? selectEmojiKeywords(global, language) : undefined;
|
||||
|
||||
return {
|
||||
editingMessage: selectEditingMessage(global, chatId, threadId, messageListType),
|
||||
@ -963,6 +967,7 @@ export default memo(withGlobal<OwnProps>(
|
||||
shouldSuggestStickers: global.settings.byKey.shouldSuggestStickers,
|
||||
recentEmojis: global.recentEmojis,
|
||||
language,
|
||||
baseEmojiKeywords: baseEmojiKeywords ? baseEmojiKeywords.keywords : undefined,
|
||||
emojiKeywords: emojiKeywords ? emojiKeywords.keywords : undefined,
|
||||
serverTimeOffset: global.serverTimeOffset,
|
||||
};
|
||||
|
||||
@ -79,7 +79,10 @@ const EmojiTooltip: FC<OwnProps> = ({
|
||||
const [selectedIndex, setSelectedIndex] = useState(NO_EMOJI_SELECTED_INDEX);
|
||||
|
||||
useEffect(() => {
|
||||
loadEmojiKeywords({ language });
|
||||
loadEmojiKeywords({ language: 'en' });
|
||||
if (language !== 'en') {
|
||||
loadEmojiKeywords({ language });
|
||||
}
|
||||
}, [loadEmojiKeywords, language]);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@ -34,6 +34,7 @@ export default function useEmojiTooltip(
|
||||
recentEmojiIds: string[],
|
||||
inputId = EDITABLE_INPUT_ID,
|
||||
onUpdateHtml: (html: string) => void,
|
||||
baseEmojiKeywords?: Record<string, string[]>,
|
||||
emojiKeywords?: Record<string, string[]>,
|
||||
) {
|
||||
const [isOpen, markIsOpen, unmarkIsOpen] = useFlag();
|
||||
@ -78,14 +79,20 @@ export default function useEmojiTooltip(
|
||||
|
||||
const emojis = Object.values(byId);
|
||||
|
||||
if (emojiKeywords) {
|
||||
const byNative = buildCollectionByKey(emojis, 'native');
|
||||
const emojisByKeyword = mapValues(emojiKeywords, (natives) => {
|
||||
const byNative = buildCollectionByKey(emojis, 'native');
|
||||
const baseEmojisByKeyword = baseEmojiKeywords
|
||||
? mapValues(baseEmojiKeywords, (natives) => {
|
||||
return Object.values(pickTruthy(byNative, natives));
|
||||
});
|
||||
setByKeyword(emojisByKeyword);
|
||||
setKeywords(Object.keys(emojisByKeyword));
|
||||
}
|
||||
})
|
||||
: {};
|
||||
const emojisByKeyword = emojiKeywords
|
||||
? mapValues(emojiKeywords, (natives) => {
|
||||
return Object.values(pickTruthy(byNative, natives));
|
||||
})
|
||||
: {};
|
||||
|
||||
setByKeyword({ ...baseEmojisByKeyword, ...emojisByKeyword });
|
||||
setKeywords([...Object.keys(baseEmojisByKeyword), ...Object.keys(emojisByKeyword)]);
|
||||
|
||||
const emojisByName = emojis.reduce((result, emoji) => {
|
||||
emoji.names.forEach((name) => {
|
||||
@ -100,10 +107,10 @@ export default function useEmojiTooltip(
|
||||
}, {} as Record<string, Emoji[]>);
|
||||
setByName(emojisByName);
|
||||
setNames(Object.keys(emojisByName));
|
||||
}, [byId, emojiKeywords]);
|
||||
}, [baseEmojiKeywords, byId, emojiKeywords]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isAllowed || !html || !byId) {
|
||||
if (!isAllowed || !html || !byId || !keywords || !keywords.length) {
|
||||
unmarkIsOpen();
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user