// 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 'mm-intl'; import Constants from '../utils/constants.jsx'; const TutorialSteps = Constants.TutorialSteps; const Preferences = Constants.Preferences; 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 = { };