From 12896bd23eeba79884245c1c29fdc568cf21a7fa Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 14 Mar 2016 08:50:46 -0400 Subject: Converting to Webpack. Stage 1. --- webapp/components/center_panel.jsx | 141 +++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 webapp/components/center_panel.jsx (limited to 'webapp/components/center_panel.jsx') diff --git a/webapp/components/center_panel.jsx b/webapp/components/center_panel.jsx new file mode 100644 index 000000000..17e5e43d9 --- /dev/null +++ b/webapp/components/center_panel.jsx @@ -0,0 +1,141 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import TutorialIntroScreens from './tutorial/tutorial_intro_screens.jsx'; +import CreatePost from './create_post.jsx'; +import PostsViewContainer from './posts_view_container.jsx'; +import PostFocusView from './post_focus_view.jsx'; +import ChannelHeader from './channel_header.jsx'; +import Navbar from './navbar.jsx'; +import FileUploadOverlay from './file_upload_overlay.jsx'; + +import PreferenceStore from 'stores/preference_store.jsx'; +import ChannelStore from 'stores/channel_store.jsx'; +import UserStore from 'stores/user_store.jsx'; + +import * as Utils from 'utils/utils.jsx'; + +import {FormattedMessage} from 'react-intl'; + +import Constants from 'utils/constants.jsx'; +const TutorialSteps = Constants.TutorialSteps; +const Preferences = Constants.Preferences; + +import React from 'react'; + +export default class CenterPanel extends React.Component { + constructor(props) { + super(props); + + this.getStateFromStores = this.getStateFromStores.bind(this); + this.validState = this.validState.bind(this); + this.onStoresChange = this.onStoresChange.bind(this); + + this.state = this.getStateFromStores(); + } + getStateFromStores() { + const tutorialStep = PreferenceStore.getInt(Preferences.TUTORIAL_STEP, UserStore.getCurrentId(), 999); + return { + showTutorialScreens: tutorialStep <= TutorialSteps.INTRO_SCREENS, + showPostFocus: ChannelStore.getPostMode() === ChannelStore.POST_MODE_FOCUS, + user: UserStore.getCurrentUser(), + channel: ChannelStore.getCurrent(), + profiles: JSON.parse(JSON.stringify(UserStore.getProfiles())) + }; + } + validState() { + return this.state.user && this.state.channel && this.state.profiles; + } + onStoresChange() { + this.setState(this.getStateFromStores()); + } + componentDidMount() { + PreferenceStore.addChangeListener(this.onStoresChange); + ChannelStore.addChangeListener(this.onStoresChange); + UserStore.addChangeListener(this.onStoresChange); + } + componentWillUnmount() { + PreferenceStore.removeChangeListener(this.onStoresChange); + ChannelStore.removeChangeListener(this.onStoresChange); + UserStore.removeChangeListener(this.onStoresChange); + } + render() { + if (!this.validState()) { + return null; + } + const channel = this.state.channel; + var handleClick = null; + let postsContainer; + let createPost; + if (this.state.showTutorialScreens) { + postsContainer = ; + createPost = null; + } else if (this.state.showPostFocus) { + postsContainer = ; + + handleClick = function clickHandler(e) { + e.preventDefault(); + Utils.switchChannel(channel); + }; + + createPost = ( + + ); + } else { + postsContainer = ; + createPost = ( +
+ +
+ ); + } + + return ( +
+
+ +
+
+ +
+
+ +
+ {postsContainer} + {createPost} +
+
+
+ ); + } +} + +CenterPanel.defaultProps = { +}; + +CenterPanel.propTypes = { +}; -- cgit v1.2.3-1-g7c22