diff options
Diffstat (limited to 'webapp/actions/emoji_actions.jsx')
-rw-r--r-- | webapp/actions/emoji_actions.jsx | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/webapp/actions/emoji_actions.jsx b/webapp/actions/emoji_actions.jsx new file mode 100644 index 000000000..128a9325a --- /dev/null +++ b/webapp/actions/emoji_actions.jsx @@ -0,0 +1,46 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import AppDispatcher from 'dispatcher/app_dispatcher.jsx'; + +import UserStore from 'stores/user_store.jsx'; + +import * as AsyncClient from 'utils/async_client.jsx'; +import Client from 'client/web_client.jsx'; + +import {ActionTypes} from 'utils/constants.jsx'; + +export function loadEmoji(getProfiles = true) { + Client.listEmoji( + (data) => { + AppDispatcher.handleServerAction({ + type: ActionTypes.RECEIVED_CUSTOM_EMOJIS, + emojis: data + }); + + if (getProfiles) { + loadProfilesForEmoji(data); + } + }, + (err) => { + AsyncClient.dispatchError(err, 'listEmoji'); + } + ); +} + +function loadProfilesForEmoji(emojiList) { + const profilesToLoad = {}; + for (let i = 0; i < emojiList.length; i++) { + const emoji = emojiList[i]; + if (!UserStore.hasProfile(emoji.creator_id)) { + profilesToLoad[emoji.creator_id] = true; + } + } + + const list = Object.keys(profilesToLoad); + if (list.length === 0) { + return; + } + + AsyncClient.getProfilesByIds(list); +} |