import React, { Suspense } from 'react'; import { defineMessages, FormattedMessage, 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 TopicCommonView from './topic-common-view.jsx'; import AuthOnboardingView from './auth-onboarding-view.jsx'; import MessageCenterView from './message-center-view.jsx'; import DirectMessageView from './direct-message-view.jsx'; import MessageComposerView, {MESSAGE_COMPOSER_VIEWS} from './message-composer-view.jsx'; import ContactManagementView, {CONTACT_MANAGEMENT_VIEWS} from './contact-management-view.jsx'; import GroupManagementView, {GROUP_MANAGEMENT_VIEWS} from './group-management-view.jsx'; import ContentLibraryView, {CONTENT_LIBRARY_VIEWS} from './content-library-view.jsx'; import CallExperienceView, {CALL_EXPERIENCE_VIEWS} from './call-experience-view.jsx'; import WorkplaceCollaborationView, {WORKPLACE_COLLABORATION_VIEWS} from './workplace-collaboration-view.jsx'; import PersonalSettingsView, {PERSONAL_SETTINGS_VIEWS} from './personal-settings-view.jsx'; import SecuritySupportView, {SECURITY_SUPPORT_VIEWS} from './security-support-view.jsx'; const AccountSettingsView = React.lazy(_ => import('./account-settings-view.jsx')); import ContactsView from './contacts-view.jsx'; const CreateAccountView = React.lazy(_ => import('./create-account-view.jsx')); import AccGeneralView from './acc-general-view.jsx'; import AccNotificationsView from './acc-notifications-view.jsx'; const AccSecurityView = React.lazy(_ => import('./acc-security-view.jsx')); import AccSupportView from './acc-support-view.jsx'; import LoginView from './login-view.jsx'; import NewTopicView from './new-topic-view.jsx'; const PasswordResetView = React.lazy(_ => import('./password-reset-view.jsx')); import SettingsView from './settings-view.jsx'; import ValidationView from './validation-view.jsx'; const WallpapersView = React.lazy(_ => import('./wallpapers.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' }, acc_general: { id: 'sidepanel_title_acc_general', description: 'Sidepanel title for AccGeneralView.', defaultMessage: 'General' }, 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' }, wallpapers: { id: 'wallpapers', description: 'Link or title for working with wallpapers.', defaultMessage: 'Wallpapers' } }); 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 ? 'messages-home' : 'tenant'); const chapterOneViews = ['tenant', 'login', 'enterprise-register', 'enterprise-feedback', 'register', 'reset', 'identity-check', 'realname', 'realname-verified', 'realname-reminder', 'independent-password']; if (chapterOneViews.includes(view)) { return