// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {createSelector} from 'reselect'; import {CustomEmoji} from 'types/emojis'; import {GlobalState} from 'types/store'; import {IDMappedObjects} from 'types/utilities'; import {createIdsSelector} from 'utils/helpers'; export function getCustomEmojis(state: GlobalState): IDMappedObjects { if (state.entities.general.config.EnableCustomEmoji !== 'true') { return {}; } return state.entities.emojis.customEmoji; } export const getCustomEmojisAsMap: (state: GlobalState) => Map = createSelector( getCustomEmojis, (emojis) => { const map = new Map(); Object.keys(emojis).forEach((key: string) => { map.set(key, emojis[key]); }); return map; }, ); export const getCustomEmojisByName: (state: GlobalState) => Map = createSelector( getCustomEmojis, (emojis: IDMappedObjects): Map => { const map: Map = new Map(); Object.keys(emojis).forEach((key: string) => { map.set(emojis[key].name, emojis[key]); }); return map; }, ); export const getCustomEmojiIdsSortedByName: (state: GlobalState) => Array = createIdsSelector( (state) => state.entities.emojis.customEmoji, (emojis: IDMappedObjects): Array => { return Object.keys(emojis).sort( (a: string, b: string): number => emojis[a].name.localeCompare(emojis[b].name), ); }, );