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 TopicCommon from '../widgets/topic-common.jsx'; import AccountSettingsView from './account-settings-view.jsx'; import ContactsView from './contacts-view.jsx'; import CreateAccountView from './create-account-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 AccountSettingsView.', defaultMessage: 'Account Settings' }, general: { id: 'panel_title_general', description: 'Title for TopicCommon.', defaultMessage: 'General' }, security: { id: 'panel_title_security', description: 'Title for TopicSecirity and AccSecurity.', defaultMessage: 'Security' }, crop: { id: 'panel_title_crop', description: 'Title for AvatarCropView.', defaultMessage: 'Drag to Adjust' }, 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' }, blocked: { id: 'sidepanel_title_blocked', description: 'Sidepanel title for ContactsView-Blocked.', defaultMessage: 'Blocked Chats' } }); class SidepanelView extends React.PureComponent { constructor(props) { super(props); this.handleNewTopic = this.handleNewTopic.bind(this); } handleNewTopic() { this.props.onNavigate('newtpk'); } render() { const {formatMessage} = this.props.intl; const view = this.props.state || (this.props.myUserId ? 'contacts' : 'login'); let title, avatar, badges; if (view == 'contacts') { title = this.props.title; avatar = this.props.avatar ? this.props.avatar : true; badges = this.props.trustedBadges; } else { title = formatMessage(messages[view]); avatar = false; badges = null; } let onCancel; if (['login', 'contacts'].indexOf(view) == -1) { onCancel = this.props.onCancel; } return (