Be somewhat fuzzier when matching emojis to complete on space

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
pull/21833/head
Michael Telatynski 2019-06-06 08:39:24 +01:00
parent 97019fbfb5
commit 878f0a4753
1 changed files with 19 additions and 14 deletions

View File

@ -533,9 +533,13 @@ export default class MessageComposerInput extends React.Component {
// The first matched group includes just the matched plaintext emoji // The first matched group includes just the matched plaintext emoji
const emoticonMatch = REGEX_EMOTICON_WHITESPACE.exec(text.slice(0, currentStartOffset)); const emoticonMatch = REGEX_EMOTICON_WHITESPACE.exec(text.slice(0, currentStartOffset));
if (emoticonMatch) { if (emoticonMatch) {
const data = EMOJIBASE.find(e => e.emoticon === emoticonMatch[1]); const data = EMOJIBASE.find(e => {
const unicodeEmoji = data ? data.unicode : ''; if (!e.emoticon) return false;
return e.emoticon.toLowerCase() === emoticonMatch[1].toLowerCase().replace("-", "");
});
// only perform replacement if we found a match, otherwise we would be not letting user type
if (data) {
const range = Range.create({ const range = Range.create({
anchor: { anchor: {
key: editorState.startText.key, key: editorState.startText.key,
@ -546,11 +550,12 @@ export default class MessageComposerInput extends React.Component {
offset: currentStartOffset - 1, offset: currentStartOffset - 1,
}, },
}); });
change = change.insertTextAtRange(range, unicodeEmoji); change = change.insertTextAtRange(range, data.unicode);
editorState = change.value; editorState = change.value;
} }
} }
} }
}
if (this.props.onInputStateChanged && editorState.blocks.size > 0) { if (this.props.onInputStateChanged && editorState.blocks.size > 0) {
let blockType = editorState.blocks.first().type; let blockType = editorState.blocks.first().type;