diff options
Diffstat (limited to 'webapp/components/post_view/reaction/index.js')
-rw-r--r-- | webapp/components/post_view/reaction/index.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/webapp/components/post_view/reaction/index.js b/webapp/components/post_view/reaction/index.js new file mode 100644 index 000000000..9bb2524a1 --- /dev/null +++ b/webapp/components/post_view/reaction/index.js @@ -0,0 +1,47 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {connect} from 'react-redux'; +import {bindActionCreators} from 'redux'; +import {getCurrentUserId, makeGetProfilesForReactions} from 'mattermost-redux/selectors/entities/users'; +import {getMissingProfilesByIds} from 'mattermost-redux/actions/users'; +import {addReaction, removeReaction} from 'mattermost-redux/actions/posts'; +import {getEmojiImageUrl} from 'mattermost-redux/utils/emoji_utils'; +import * as Emoji from 'utils/emoji.jsx'; + +import Reaction from './reaction.jsx'; + +function makeMapStateToProps() { + const getProfilesForReactions = makeGetProfilesForReactions(); + + return function mapStateToProps(state, ownProps) { + const profiles = getProfilesForReactions(state, ownProps.reactions); + let emoji; + if (Emoji.EmojiIndicesByAlias.has(ownProps.emojiName)) { + emoji = Emoji.Emojis[Emoji.EmojiIndicesByAlias.get(ownProps.emojiName)]; + } else { + emoji = ownProps.emojis[ownProps.emojiName]; + } + + return { + ...ownProps, + profiles, + otherUsersCount: ownProps.reactions.length - profiles.length, + currentUserId: getCurrentUserId(state), + reactionCount: ownProps.reactions.length, + emojiImageUrl: getEmojiImageUrl(emoji) + }; + }; +} + +function mapDispatchToProps(dispatch) { + return { + actions: bindActionCreators({ + addReaction, + removeReaction, + getMissingProfilesByIds + }, dispatch) + }; +} + +export default connect(makeMapStateToProps, mapDispatchToProps)(Reaction); |