diff options
Diffstat (limited to 'webapp/components/post_view/index.js')
-rw-r--r-- | webapp/components/post_view/index.js | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/webapp/components/post_view/index.js b/webapp/components/post_view/index.js index b42b486ab..ad0270cdd 100644 --- a/webapp/components/post_view/index.js +++ b/webapp/components/post_view/index.js @@ -3,22 +3,52 @@ import {connect} from 'react-redux'; import {bindActionCreators} from 'redux'; -import {viewChannel} from 'mattermost-redux/actions/channels'; -import PostViewCache from './post_view_cache.jsx'; +import {makeGetPostsInChannel, makeGetPostsAroundPost} from 'mattermost-redux/selectors/entities/posts'; +import {get} from 'mattermost-redux/selectors/entities/preferences'; +import {getChannel} from 'mattermost-redux/selectors/entities/channels'; +import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users'; +import {getPosts, getPostsBefore, getPostsAfter, getPostThread} from 'mattermost-redux/actions/posts'; +import {increasePostVisibility} from 'actions/post_actions.jsx'; +import {Preferences} from 'utils/constants.jsx'; -function mapStateToProps(state, ownProps) { - return { - ...ownProps +import PostList from './post_list.jsx'; + +function makeMapStateToProps() { + const getPostsInChannel = makeGetPostsInChannel(); + const getPostsAroundPost = makeGetPostsAroundPost(); + + return function mapStateToProps(state, ownProps) { + let posts; + if (ownProps.focusedPostId) { + posts = getPostsAroundPost(state, ownProps.focusedPostId, ownProps.channelId); + } else { + posts = getPostsInChannel(state, ownProps.channelId); + } + + return { + channel: getChannel(state, ownProps.channelId), + lastViewedAt: state.views.channel.lastChannelViewTime[ownProps.channelId], + posts, + postVisibility: state.views.channel.postVisibility[ownProps.channelId], + loadingPosts: state.views.channel.loadingPosts[ownProps.channelId], + focusedPostId: ownProps.focusedPostId, + currentUserId: getCurrentUserId(state), + fullWidth: get(state, Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.CHANNEL_DISPLAY_MODE, Preferences.CHANNEL_DISPLAY_MODE_DEFAULT) === Preferences.CHANNEL_DISPLAY_MODE_FULL_SCREEN + }; }; } function mapDispatchToProps(dispatch) { return { actions: bindActionCreators({ - viewChannel + getPosts, + getPostsBefore, + getPostsAfter, + getPostThread, + increasePostVisibility }, dispatch) }; } -export default connect(mapStateToProps, mapDispatchToProps)(PostViewCache); +export default connect(makeMapStateToProps, mapDispatchToProps)(PostList); |