diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index a525fcb874..939ec4d9f5 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -533,21 +533,24 @@ export default class MessageComposerInput extends React.Component { // The first matched group includes just the matched plaintext emoji const emoticonMatch = REGEX_EMOTICON_WHITESPACE.exec(text.slice(0, currentStartOffset)); if (emoticonMatch) { - const data = EMOJIBASE.find(e => e.emoticon === emoticonMatch[1]); - const unicodeEmoji = data ? data.unicode : ''; + const query = emoticonMatch[1].toLowerCase().replace("-", ""); + const data = EMOJIBASE.find(e => e.emoticon ? e.emoticon.toLowerCase() === query : false); - const range = Range.create({ - anchor: { - key: editorState.startText.key, - offset: currentStartOffset - emoticonMatch[1].length - 1, - }, - focus: { - key: editorState.startText.key, - offset: currentStartOffset - 1, - }, - }); - change = change.insertTextAtRange(range, unicodeEmoji); - editorState = change.value; + // only perform replacement if we found a match, otherwise we would be not letting user type + if (data) { + const range = Range.create({ + anchor: { + key: editorState.startText.key, + offset: currentStartOffset - emoticonMatch[1].length - 1, + }, + focus: { + key: editorState.startText.key, + offset: currentStartOffset - 1, + }, + }); + change = change.insertTextAtRange(range, data.unicode); + editorState = change.value; + } } } }