From 72d939b69fca9443038d89815ca5356319f42c43 Mon Sep 17 00:00:00 2001
From: Nolan Lawson <nolan@nolanlawson.com>
Date: Fri, 6 Oct 2017 03:03:13 -0700
Subject: [PATCH] Fix thinking_face emoji autocomplete (#5238)

---
 .../mastodon/features/emoji/emoji_utils.js      | 17 ++++++++++-------
 spec/javascript/components/emoji_index.test.js  |  7 +++++++
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/app/javascript/mastodon/features/emoji/emoji_utils.js b/app/javascript/mastodon/features/emoji/emoji_utils.js
index 6ef2785d9..2742185d9 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 4bff79265..07d26a685 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);
+  });
 });