import React from 'react'; import { defineMessages, injectIntl } from 'react-intl'; import ErrorPanel from '../widgets/error-panel.jsx'; import LoadSpinner from '../widgets/load-spinner.jsx'; import SideNavbar from '../widgets/side-navbar.jsx'; import ContactsView from './contacts-view.jsx'; import CreateAccountView from './create-account-view.jsx'; import EditAccountView from './edit-account-view.jsx'; import AccGeneralView from './acc-general-view.jsx'; import AccNotificationsView from './acc-notifications-view.jsx'; import AccSecurityView from './acc-security-view.jsx'; import AccSupportView from './acc-support-view.jsx'; import LoginView from './login-view.jsx'; import NewTopicView from './new-topic-view.jsx'; import PasswordResetView from './password-reset-view.jsx'; import SettingsView from './settings-view.jsx'; import ValidationView from './validation-view.jsx'; // Panel titles for translation. const messages = defineMessages({ 'login': { id: 'sidepanel_title_login', description: 'Sidepanel title for LoginView.', defaultMessage: 'Sign In' }, 'register': { id: 'sidepanel_title_register', description: 'Sidepanel title for CreateAccountView.', defaultMessage: 'Create Account' }, 'settings': { id: 'sidepanel_title_settings', description: 'Sidepanel title for SettingsView.', defaultMessage: 'Settings' }, 'edit': { id: 'sidepanel_title_account_settings', description: 'Sidepanel title for EditAccountView.', defaultMessage: 'Account Settings' }, 'general': { id: 'sidepanel_title_acc_general', description: 'Sidepanel title for AccGeneralView.', defaultMessage: 'General' }, 'security': { id: 'sidepanel_title_acc_security', description: 'Sidepanel title for AccSecurityView.', defaultMessage: 'Security' }, 'notif': { id: 'sidepanel_title_acc_notifications', description: 'Sidepanel title for AccNotificationsView.', defaultMessage: 'Notifications' }, 'support': { id: 'sidepanel_title_acc_support', description: 'Sidepanel title for AccSupportView.', defaultMessage: 'Support' }, 'newtpk': { id: 'sidepanel_title_newtpk', description: 'Sidepanel title for NewTopicView.', defaultMessage: 'Start New Chat' }, 'cred': { id: 'sidepanel_title_cred', description: 'Sidepanel title for ValidationView.', defaultMessage: 'Confirm Credentials' }, 'reset': { id: 'sidepanel_title_reset', description: 'Sidepanel title for PasswordResetView.', defaultMessage: 'Reset Password' }, 'archive': { id: 'sidepanel_title_archive', description: 'Sidepanel title for ContactsView-Archive.', defaultMessage: 'Archived Chats' } }); class SidepanelView extends React.Component { constructor(props) { super(props); this.handleLoginRequested = this.handleLoginRequested.bind(this); this.handleNewTopic = this.handleNewTopic.bind(this); } handleLoginRequested(login, password) { this.props.onLoginRequest(login, password); } handleNewTopic() { this.props.onBasicNavigate('newtpk'); } render() { const {formatMessage} = this.props.intl; const view = this.props.state || (this.props.myUserId ? 'contacts' : 'login'); let title, avatar; if (view == 'contacts') { title = this.props.title; avatar = this.props.avatar ? this.props.avatar : true; } else { title = formatMessage(messages[view]); avatar = false; } let onCancel; if (['login', 'contacts'].indexOf(view) == -1) { onCancel = this.props.onCancel; } return (