diff --git a/app/javascript/mastodon/features/emoji/emoji_utils.js b/app/javascript/mastodon/features/emoji/emoji_utils.js index 6ef2785d9a..2742185d9c 100644 --- a/app/javascript/mastodon/features/emoji/emoji_utils.js +++ b/app/javascript/mastodon/features/emoji/emoji_utils.js @@ -125,13 +125,16 @@ function getData(emoji) { } function intersect(a, b) { - let aSet = new Set(a); - let bSet = new Set(b); - let intersection = new Set( - [...aSet].filter(x => bSet.has(x)) - ); - - return Array.from(intersection); + let set; + let list; + if (a.length < b.length) { + set = new Set(a); + list = b; + } else { + set = new Set(b); + list = a; + } + return Array.from(new Set(list.filter(x => set.has(x)))); } export { getData, getSanitizedData, intersect }; diff --git a/spec/javascript/components/emoji_index.test.js b/spec/javascript/components/emoji_index.test.js index 4bff792650..07d26a685f 100644 --- a/spec/javascript/components/emoji_index.test.js +++ b/spec/javascript/components/emoji_index.test.js @@ -96,4 +96,11 @@ describe('emoji_index', () => { expect(search('polo').map(trimEmojis)).to.deep.equal(expected); expect(emojiIndex.search('polo').map(trimEmojis)).to.deep.equal(expected); }); + + it('can search for thinking_face', () => { + let expected = [ { id: 'thinking_face', unified: '1f914', native: '🤔' } ]; + expect(search('thinking_fac').map(trimEmojis)).to.deep.equal(expected); + // this is currently broken in emoji-mart + // expect(emojiIndex.search('thinking_fac').map(trimEmojis)).to.deep.equal(expected); + }); });