diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js | 40 | ||||
-rw-r--r-- | app/javascript/mastodon/features/emoji/emoji_mart_search_light.js | 10 |
2 files changed, 40 insertions, 10 deletions
diff --git a/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js b/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js index bd63d91b3..9df2d34a0 100644 --- a/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js +++ b/app/javascript/mastodon/features/emoji/__tests__/emoji_index-test.js @@ -44,7 +44,12 @@ describe('emoji_index', () => { expect(emojiIndex.search('apple').map(trimEmojis)).toEqual(expected); }); - it('erases custom emoji if not passed again', () => { + it('can include/exclude categories', () => { + expect(search('flag', { include: ['people'] })).toEqual([]); + expect(emojiIndex.search('flag', { include: ['people'] })).toEqual([]); + }); + + it('(different behavior from emoji-mart) do not erases custom emoji if not passed again', () => { const custom = [ { id: 'mastodon', @@ -60,7 +65,33 @@ describe('emoji_index', () => { search('', { custom }); emojiIndex.search('', { custom }); const expected = []; - expect(search('masto').map(trimEmojis)).toEqual(expected); + const lightExpected = [ + { + id: 'mastodon', + custom: true, + }, + ]; + expect(search('masto').map(trimEmojis)).toEqual(lightExpected); + expect(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected); + }); + + it('(different behavior from emoji-mart) erases custom emoji if another is passed', () => { + const custom = [ + { + id: 'mastodon', + name: 'mastodon', + short_names: ['mastodon'], + text: '', + emoticons: [], + keywords: ['mastodon'], + imageUrl: 'http://example.com', + custom: true, + }, + ]; + search('', { custom }); + emojiIndex.search('', { custom }); + const expected = []; + expect(search('masto', { custom: [] }).map(trimEmojis)).toEqual(expected); expect(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected); }); @@ -97,11 +128,6 @@ describe('emoji_index', () => { .not.toContain('pineapple'); }); - it('can include/exclude categories', () => { - expect(search('flag', { include: ['people'] })).toEqual([]); - expect(emojiIndex.search('flag', { include: ['people'] })).toEqual([]); - }); - it('does an emoji whose unified name is irregular', () => { const expected = [ { diff --git a/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js index bf511d290..36351ec02 100644 --- a/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js +++ b/app/javascript/mastodon/features/emoji/emoji_mart_search_light.js @@ -54,9 +54,13 @@ function addCustomToPool(custom, pool) { index = {}; } -function search(value, { emojisToShowFilter, maxResults, include, exclude, custom = [] } = {}) { - if (customEmojisList !== custom) - addCustomToPool(custom, originalPool); +function search(value, { emojisToShowFilter, maxResults, include, exclude, custom } = {}) { + if (custom !== undefined) { + if (customEmojisList !== custom) + addCustomToPool(custom, originalPool); + } else { + custom = []; + } maxResults = maxResults || 75; include = include || []; |