pleroma/packages/pl-fe/src/reducers/custom-emojis.ts

38 lines
1.2 KiB
TypeScript
Raw Normal View History

2022-07-04 13:30:35 -07:00
import { buildCustomEmojis } from 'soapbox/features/emoji';
2022-07-09 09:03:22 -07:00
import emojiData from 'soapbox/features/emoji/data';
2022-07-04 13:30:35 -07:00
import { addCustomToPool } from 'soapbox/features/emoji/search';
import { CUSTOM_EMOJIS_FETCH_SUCCESS, type CustomEmojisAction } from '../actions/custom-emojis';
2020-03-27 13:59:38 -07:00
import type { CustomEmoji } from 'pl-api';
const initialState: Array<CustomEmoji> = [];
2021-06-16 15:39:03 -07:00
// Populate custom emojis for composer autosuggest
const autosuggestPopulate = (emojis: Array<CustomEmoji>) => {
2021-06-16 15:39:03 -07:00
addCustomToPool(buildCustomEmojis(emojis));
};
const importEmojis = (customEmojis: Array<CustomEmoji>) => {
const emojis = customEmojis.filter((emoji) => {
2022-07-09 09:03:22 -07:00
// If a custom emoji has the shortcode of a Unicode emoji, skip it.
// Otherwise it breaks EmojiMart.
// https://gitlab.com/soapbox-pub/soapbox/-/issues/610
const shortcode = emoji.shortcode.toLowerCase();
2022-07-09 09:03:22 -07:00
return !emojiData.emojis[shortcode];
});
2021-06-16 15:39:03 -07:00
autosuggestPopulate(emojis);
return emojis;
};
2020-03-27 13:59:38 -07:00
const custom_emojis = (state = initialState, action: CustomEmojisAction) => {
if (action.type === CUSTOM_EMOJIS_FETCH_SUCCESS) {
return importEmojis(action.custom_emojis);
2020-03-27 13:59:38 -07:00
}
return state;
};
export { custom_emojis as default };