|
- import { connect } from 'react-redux';
- import EmojiPickerDropdown from '../components/emoji_picker_dropdown';
- import { changeSetting } from '../../../actions/settings';
- import { createSelector } from 'reselect';
- import { Map as ImmutableMap } from 'immutable';
- import { useEmoji } from '../../../actions/emojis';
-
- const perLine = 8;
- const lines = 2;
-
- const getFrequentlyUsedEmojis = createSelector([
- state => state.getIn(['settings', 'frequentlyUsedEmojis'], ImmutableMap()),
- ], emojiCounters => emojiCounters
- .keySeq()
- .sort((a, b) => emojiCounters.get(a) - emojiCounters.get(b))
- .reverse()
- .slice(0, perLine * lines)
- .toArray()
- );
-
- const mapStateToProps = state => ({
- custom_emojis: state.get('custom_emojis'),
- autoPlay: state.getIn(['meta', 'auto_play_gif']),
- skinTone: state.getIn(['settings', 'skinTone']),
- frequentlyUsedEmojis: getFrequentlyUsedEmojis(state),
- });
-
- const mapDispatchToProps = (dispatch, { onPickEmoji }) => ({
- onSkinTone: skinTone => {
- dispatch(changeSetting(['skinTone'], skinTone));
- },
-
- onPickEmoji: emoji => {
- dispatch(useEmoji(emoji));
-
- if (onPickEmoji) {
- onPickEmoji(emoji);
- }
- },
- });
-
- export default connect(mapStateToProps, mapDispatchToProps)(EmojiPickerDropdown);
|