summaryrefslogtreecommitdiffstats
path: root/webapp/components/post_focus_view.jsx
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2016-05-27 16:01:28 -0400
committerChristopher Speller <crspeller@gmail.com>2016-05-27 16:01:28 -0400
commit6399a94ce221be3d15e7132654c28cd953075ec6 (patch)
tree4b1927fdd8374e8bd3cb809ecb720f2689043358 /webapp/components/post_focus_view.jsx
parentca9f348be6bf62fc888df9a710c9af155872528e (diff)
downloadchat-6399a94ce221be3d15e7132654c28cd953075ec6.tar.gz
chat-6399a94ce221be3d15e7132654c28cd953075ec6.tar.bz2
chat-6399a94ce221be3d15e7132654c28cd953075ec6.zip
PLT-2672 Refactored posts view with caching (#3054)
* Refactored posts view to use view controller design * Add post view caching * Required updates after rebase * Fixed bug where current channel not set yet was causing breakage
Diffstat (limited to 'webapp/components/post_focus_view.jsx')
-rw-r--r--webapp/components/post_focus_view.jsx107
1 files changed, 0 insertions, 107 deletions
diff --git a/webapp/components/post_focus_view.jsx b/webapp/components/post_focus_view.jsx
deleted file mode 100644
index 30a2f9d72..000000000
--- a/webapp/components/post_focus_view.jsx
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import PostsView from './posts_view.jsx';
-
-import PostStore from 'stores/post_store.jsx';
-import ChannelStore from 'stores/channel_store.jsx';
-import * as GlobalActions from 'actions/global_actions.jsx';
-
-import React from 'react';
-
-export default class PostFocusView extends React.Component {
- constructor(props) {
- super(props);
-
- this.onChannelChange = this.onChannelChange.bind(this);
- this.onPostsChange = this.onPostsChange.bind(this);
- this.handlePostsViewScroll = this.handlePostsViewScroll.bind(this);
- this.loadMorePostsTop = this.loadMorePostsTop.bind(this);
- this.loadMorePostsBottom = this.loadMorePostsBottom.bind(this);
-
- const focusedPostId = PostStore.getFocusedPostId();
-
- this.state = {
- scrollType: PostsView.SCROLL_TYPE_POST,
- currentChannel: ChannelStore.getCurrentId().slice(),
- scrollPostId: focusedPostId,
- postList: PostStore.getVisiblePosts(focusedPostId),
- atTop: PostStore.getVisibilityAtTop(focusedPostId),
- atBottom: PostStore.getVisibilityAtBottom(focusedPostId)
- };
- }
-
- componentDidMount() {
- ChannelStore.addChangeListener(this.onChannelChange);
- PostStore.addChangeListener(this.onPostsChange);
- }
-
- componentWillUnmount() {
- ChannelStore.removeChangeListener(this.onChannelChange);
- PostStore.removeChangeListener(this.onPostsChange);
- }
-
- onChannelChange() {
- const currentChannel = ChannelStore.getCurrentId();
- if (this.state.currentChannel !== currentChannel) {
- this.setState({
- currentChannel: currentChannel.slice(),
- scrollType: PostsView.SCROLL_TYPE_POST
- });
- }
- }
-
- onPostsChange() {
- const focusedPostId = PostStore.getFocusedPostId();
- if (focusedPostId == null) {
- return;
- }
-
- this.setState({
- scrollPostId: focusedPostId,
- postList: PostStore.getVisiblePosts(focusedPostId),
- atTop: PostStore.getVisibilityAtTop(focusedPostId),
- atBottom: PostStore.getVisibilityAtBottom(focusedPostId)
- });
- }
-
- handlePostsViewScroll() {
- this.setState({scrollType: PostsView.SCROLL_TYPE_FREE});
- }
-
- loadMorePostsTop() {
- GlobalActions.emitLoadMorePostsFocusedTopEvent();
- }
-
- loadMorePostsBottom() {
- GlobalActions.emitLoadMorePostsFocusedBottomEvent();
- }
-
- render() {
- const postsToHighlight = {};
- postsToHighlight[this.state.scrollPostId] = true;
-
- if (!this.state.postList) {
- return null;
- }
-
- return (
- <div id='post-list'>
- <PostsView
- key={'postfocusview'}
- isActive={true}
- postList={this.state.postList}
- scrollType={this.state.scrollType}
- scrollPostId={this.state.scrollPostId}
- postViewScrolled={this.handlePostsViewScroll}
- loadMorePostsTopClicked={this.loadMorePostsTop}
- loadMorePostsBottomClicked={this.loadMorePostsBottom}
- showMoreMessagesTop={!this.state.atTop}
- showMoreMessagesBottom={!this.state.atBottom}
- messageSeparatorTime={0}
- postsToHighlight={postsToHighlight}
- />
- </div>
- );
- }
-}