diff --git a/app/soapbox/features/emoji/emoji_mart_search_light.js b/app/soapbox/features/emoji/emoji_mart_search_light.js index 164fdcc0b..55166112b 100644 --- a/app/soapbox/features/emoji/emoji_mart_search_light.js +++ b/app/soapbox/features/emoji/emoji_mart_search_light.js @@ -38,7 +38,7 @@ function clearCustomEmojis(pool) { }); } -function addCustomToPool(custom, pool) { +export function addCustomToPool(custom, pool = originalPool) { if (customEmojisList.length) clearCustomEmojis(pool); custom.forEach((emoji) => { @@ -54,7 +54,7 @@ function addCustomToPool(custom, pool) { index = {}; } -function search(value, { emojisToShowFilter, maxResults, include, exclude, custom } = {}) { +export function search(value, { emojisToShowFilter, maxResults, include, exclude, custom } = {}) { if (custom !== undefined) { if (customEmojisList !== custom) addCustomToPool(custom, originalPool); @@ -181,5 +181,3 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo return results; } - -export { search }; diff --git a/app/soapbox/reducers/custom_emojis.js b/app/soapbox/reducers/custom_emojis.js index 75f8f2136..61d8feb1b 100644 --- a/app/soapbox/reducers/custom_emojis.js +++ b/app/soapbox/reducers/custom_emojis.js @@ -1,17 +1,27 @@ import { List as ImmutableList, fromJS } from 'immutable'; import { CUSTOM_EMOJIS_FETCH_SUCCESS } from '../actions/custom_emojis'; +import { addCustomToPool } from 'soapbox/features/emoji/emoji_mart_search_light'; +import { buildCustomEmojis } from '../features/emoji/emoji'; import { emojis as emojiData } from 'soapbox/features/emoji/emoji_mart_data_light'; const initialState = ImmutableList(); -const importEmojis = (state, emojis) => { - return fromJS(emojis).filter(emoji => { +// Populate custom emojis for composer autosuggest +const autosuggestPopulate = emojis => { + addCustomToPool(buildCustomEmojis(emojis)); +}; + +const importEmojis = (state, customEmojis) => { + const emojis = fromJS(customEmojis).filter(emoji => { // If a custom emoji has the shortcode of a Unicode emoji, skip it. // Otherwise it breaks EmojiMart. // https://gitlab.com/soapbox-pub/soapbox-fe/-/issues/610 const shortcode = emoji.get('shortcode', '').toLowerCase(); return !emojiData[shortcode]; }); + + autosuggestPopulate(emojis); + return emojis; }; export default function custom_emojis(state = initialState, action) {