From ec2aaa8789bb762f9aa421a646c9d7c167a29839 Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Fri, 13 Oct 2017 12:20:54 +0200 Subject: [PATCH] Add exact emoji name match detection to emoji keyboard --- Resources/Plugins/emoji-keyboard/.meta | 2 +- Resources/Plugins/emoji-keyboard/browser.js | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Resources/Plugins/emoji-keyboard/.meta b/Resources/Plugins/emoji-keyboard/.meta index d9e20ffc..0b12c3b1 100644 --- a/Resources/Plugins/emoji-keyboard/.meta +++ b/Resources/Plugins/emoji-keyboard/.meta @@ -9,7 +9,7 @@ Emoji keyboard chylex [version] -1.4 +1.4.1 [website] https://tweetduck.chylex.com diff --git a/Resources/Plugins/emoji-keyboard/browser.js b/Resources/Plugins/emoji-keyboard/browser.js index 1476c9b9..b53e3791 100644 --- a/Resources/Plugins/emoji-keyboard/browser.js +++ b/Resources/Plugins/emoji-keyboard/browser.js @@ -303,23 +303,26 @@ enabled(){ let firstColon = val.lastIndexOf(':', ele[0].selectionStart); return if firstColon === -1; - let search = val.substring(firstColon+1, ele[0].selectionStart); - return if !/^[a-z_]+$/i.test(search); + let search = val.substring(firstColon+1, ele[0].selectionStart).toLowerCase(); + return if !/^[a-z_]+$/.test(search); let keywords = search.split("_").filter(kw => kw.length > 0).map(kw => kw.toLowerCase()); return if keywords.length === 0; - let foundName = me.emojiNames.filter(name => keywords.every(kw => name.includes(kw))); + let foundNames = me.emojiNames.filter(name => keywords.every(kw => name.includes(kw))); - if (foundName.length === 0){ + if (foundNames.length === 0){ return; } + else if (foundNames.length > 1 && foundNames.includes(search)){ + foundNames = [ search ]; + } lastEmojiKeyword = `:${search}:`; lastEmojiPosition = lastEmojiLength = 0; - if (foundName.length === 1){ - let foundIndex = me.emojiNames.indexOf(foundName[0]); + if (foundNames.length === 1){ + let foundIndex = me.emojiNames.indexOf(foundNames[0]); let foundEmoji; for(let array of [ me.emojiData1, me.emojiData2[me.selectedSkinTone], me.emojiData3 ]){ @@ -346,7 +349,7 @@ enabled(){ lastEmojiLength = foundEmoji.length; } } - else if (foundName.length > 1){ + else if (foundNames.length > 1){ e.preventDefault(); ele.val(val.substring(0, firstColon)+val.substring(ele[0].selectionStart)); ele[0].selectionEnd = ele[0].selectionStart = firstColon;