diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-06-22 10:30:01 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-22 10:30:01 -0400 |
commit | 14510ce19470c176a7f286d4a3238e813f7dc959 (patch) | |
tree | 3aeb058bd9fc0395a040785c876a2762e523df96 /webapp/root.jsx | |
parent | 00dc8e734c5af9e2a7de778b60a2eeaa0e1be269 (diff) | |
download | chat-14510ce19470c176a7f286d4a3238e813f7dc959.tar.gz chat-14510ce19470c176a7f286d4a3238e813f7dc959.tar.bz2 chat-14510ce19470c176a7f286d4a3238e813f7dc959.zip |
Adding webpack code splitting (#3377)
Diffstat (limited to 'webapp/root.jsx')
-rw-r--r-- | webapp/root.jsx | 567 |
1 files changed, 12 insertions, 555 deletions
diff --git a/webapp/root.jsx b/webapp/root.jsx index b6302a76f..d5b9a6d47 100644 --- a/webapp/root.jsx +++ b/webapp/root.jsx @@ -4,106 +4,21 @@ import $ from 'jquery'; require('perfect-scrollbar/jquery')($); -import 'bootstrap-colorpicker/dist/css/bootstrap-colorpicker.css'; -import 'google-fonts/google-fonts.css'; -import 'sass/styles.scss'; - import React from 'react'; import ReactDOM from 'react-dom'; -import {IndexRedirect, Router, Route, IndexRoute, Redirect, browserHistory} from 'react-router'; -import Root from 'components/root.jsx'; -import LoggedIn from 'components/logged_in.jsx'; -import HeaderFooterTemplate from 'components/header_footer_template.jsx'; -import NeedsTeam from 'components/needs_team.jsx'; -import PasswordResetSendLink from 'components/password_reset_send_link.jsx'; -import PasswordResetForm from 'components/password_reset_form.jsx'; -import ChannelView from 'components/channel_view.jsx'; -import PermalinkView from 'components/permalink_view.jsx'; -import Sidebar from 'components/sidebar.jsx'; -import * as AsyncClient from 'utils/async_client.jsx'; -import ChannelStore from 'stores/channel_store.jsx'; -import ErrorStore from 'stores/error_store.jsx'; -import TeamStore from 'stores/team_store.jsx'; -import BrowserStore from 'stores/browser_store.jsx'; -import * as Utils from 'utils/utils.jsx'; - -import Client from 'utils/web_client.jsx'; - -import * as Websockets from 'actions/websocket_actions.jsx'; +import {Router, browserHistory} from 'react-router/es6'; import * as GlobalActions from 'actions/global_actions.jsx'; -import SignupUserComplete from 'components/signup_user_complete.jsx'; -import ShouldVerifyEmail from 'components/should_verify_email.jsx'; -import DoVerifyEmail from 'components/do_verify_email.jsx'; -import TutorialView from 'components/tutorial/tutorial_view.jsx'; -import BackstageNavbar from 'components/backstage/backstage_navbar.jsx'; -import BackstageSidebar from 'components/backstage/backstage_sidebar.jsx'; -import Integrations from 'components/backstage/integrations.jsx'; -import InstalledIncomingWebhooks from 'components/backstage/installed_incoming_webhooks.jsx'; -import InstalledOutgoingWebhooks from 'components/backstage/installed_outgoing_webhooks.jsx'; -import InstalledCommands from 'components/backstage/installed_commands.jsx'; -import AddIncomingWebhook from 'components/backstage/add_incoming_webhook.jsx'; -import AddOutgoingWebhook from 'components/backstage/add_outgoing_webhook.jsx'; -import AddCommand from 'components/backstage/add_command.jsx'; -import ErrorPage from 'components/error_page.jsx'; - -import AppDispatcher from './dispatcher/app_dispatcher.jsx'; -import Constants from './utils/constants.jsx'; -const ActionTypes = Constants.ActionTypes; - -import AdminConsole from 'components/admin_console/admin_console.jsx'; -import SystemAnalytics from 'components/analytics/system_analytics.jsx'; -import ConfigurationSettings from 'components/admin_console/configuration_settings.jsx'; -import LocalizationSettings from 'components/admin_console/localization_settings.jsx'; -import UsersAndTeamsSettings from 'components/admin_console/users_and_teams_settings.jsx'; -import PrivacySettings from 'components/admin_console/privacy_settings.jsx'; -import LogSettings from 'components/admin_console/log_settings.jsx'; -import EmailAuthenticationSettings from 'components/admin_console/email_authentication_settings.jsx'; -import GitLabSettings from 'components/admin_console/gitlab_settings.jsx'; -import LdapSettings from 'components/admin_console/ldap_settings.jsx'; -import SignupSettings from 'components/admin_console/signup_settings.jsx'; -import LoginSettings from 'components/admin_console/login_settings.jsx'; -import PublicLinkSettings from 'components/admin_console/public_link_settings.jsx'; -import SessionSettings from 'components/admin_console/session_settings.jsx'; -import ConnectionSettings from 'components/admin_console/connection_settings.jsx'; -import EmailSettings from 'components/admin_console/email_settings.jsx'; -import PushSettings from 'components/admin_console/push_settings.jsx'; -import WebhookSettings from 'components/admin_console/webhook_settings.jsx'; -import ExternalServiceSettings from 'components/admin_console/external_service_settings.jsx'; -import DatabaseSettings from 'components/admin_console/database_settings.jsx'; -import StorageSettings from 'components/admin_console/storage_settings.jsx'; -import ImageSettings from 'components/admin_console/image_settings.jsx'; -import CustomBrandSettings from 'components/admin_console/custom_brand_settings.jsx'; -import CustomEmojiSettings from 'components/admin_console/custom_emoji_settings.jsx'; -import LegalAndSupportSettings from 'components/admin_console/legal_and_support_settings.jsx'; -import ComplianceSettings from 'components/admin_console/compliance_settings.jsx'; -import RateSettings from 'components/admin_console/rate_settings.jsx'; -import DeveloperSettings from 'components/admin_console/developer_settings.jsx'; -import TeamUsers from 'components/admin_console/team_users.jsx'; -import TeamAnalytics from 'components/analytics/team_analytics.jsx'; -import LicenseSettings from 'components/admin_console/license_settings.jsx'; -import Audits from 'components/admin_console/audits.jsx'; -import Logs from 'components/admin_console/logs.jsx'; - -import ClaimController from 'components/claim/claim_controller.jsx'; -import EmailToOAuth from 'components/claim/components/email_to_oauth.jsx'; -import OAuthToEmail from 'components/claim/components/oauth_to_email.jsx'; -import LDAPToEmail from 'components/claim/components/ldap_to_email.jsx'; -import EmailToLDAP from 'components/claim/components/email_to_ldap.jsx'; - -import LoginController from 'components/login/login_controller.jsx'; -import SelectTeam from 'components/select_team/select_team.jsx'; -import CreateTeamController from 'components/create_team/create_team_controller.jsx'; -import CreateTeamDisplayName from 'components/create_team/components/display_name.jsx'; -import CreateTeamTeamUrl from 'components/create_team/components/team_url.jsx'; - +import * as Websockets from 'actions/websocket_actions.jsx'; +import BrowserStore from 'stores/browser_store.jsx'; import * as I18n from 'i18n/i18n.jsx'; -const notFoundParams = { - title: Utils.localizeMessage('error.not_found.title', 'Page not found'), - message: Utils.localizeMessage('error.not_found.message', 'The page you were trying to reach does not exist'), - link: '/', - linkmessage: Utils.localizeMessage('error.not_found.link_message', 'Back to Mattermost') -}; +// Import our styles +import 'bootstrap-colorpicker/dist/css/bootstrap-colorpicker.css'; +import 'google-fonts/google-fonts.css'; +import 'sass/styles.scss'; + +// Import the root of our routing tree +import rRoot from 'routes/route_root.jsx'; // This is for anything that needs to be done for ALL react components. // This runs before we start to render anything. @@ -157,470 +72,12 @@ function preRenderSetup(callwhendone) { } } -function preLoggedIn(nextState, replace, callback) { - ErrorStore.clearLastError(); - callback(); -} - -function preNeedsTeam(nextState, replace, callback) { - // First check to make sure you're in the current team - // for the current url. - var teamName = Utils.getTeamNameFromUrl(); - var team = TeamStore.getByName(teamName); - const oldTeamId = TeamStore.getCurrentId(); - - if (!team) { - browserHistory.push('/'); - return; - } - - GlobalActions.emitCloseRightHandSide(); - - TeamStore.saveMyTeam(team); - TeamStore.emitChange(); - - // If the old team id is null then we will already have the direct - // profiles from initial load - if (oldTeamId != null) { - AsyncClient.getDirectProfiles(); - } - - var d1 = $.Deferred(); //eslint-disable-line new-cap - var d2 = $.Deferred(); //eslint-disable-line new-cap - - Client.getChannels( - (data) => { - AppDispatcher.handleServerAction({ - type: ActionTypes.RECEIVED_CHANNELS, - channels: data.channels, - members: data.members - }); - - d1.resolve(); - }, - (err) => { - AsyncClient.dispatchError(err, 'getChannels'); - d1.resolve(); - } - ); - - Client.getProfiles( - (data) => { - AppDispatcher.handleServerAction({ - type: ActionTypes.RECEIVED_PROFILES, - profiles: data - }); - - d2.resolve(); - }, - (err) => { - AsyncClient.dispatchError(err, 'getProfiles'); - d2.resolve(); - } - ); - - $.when(d1, d2).done(() => { - callback(); - }); -} - -function onPermalinkEnter(nextState) { - const postId = nextState.params.postid; - GlobalActions.emitPostFocusEvent(postId); -} - -function onChannelEnter(nextState, replace, callback) { - doChannelChange(nextState, replace, callback); -} - -function doChannelChange(state, replace, callback) { - let channel; - if (state.location.query.fakechannel) { - channel = JSON.parse(state.location.query.fakechannel); - } else { - channel = ChannelStore.getByName(state.params.channel); - if (!channel) { - channel = ChannelStore.getMoreByName(state.params.channel); - } - if (!channel) { - Client.joinChannelByName( - state.params.channel, - (data) => { - GlobalActions.emitChannelClickEvent(data); - callback(); - }, - () => { - if (state.params.team) { - replace('/' + state.params.team + '/channels/town-square'); - } else { - replace('/'); - } - callback(); - } - ); - return; - } - } - GlobalActions.emitChannelClickEvent(channel); - callback(); -} - function renderRootComponent() { ReactDOM.render(( <Router history={browserHistory} - > - <Route - path='/' - component={Root} - > - <Route - path='error' - component={ErrorPage} - /> - <Route component={HeaderFooterTemplate}> - <Route - path='login' - component={LoginController} - /> - <Route - path='reset_password' - component={PasswordResetSendLink} - /> - <Route - path='reset_password_complete' - component={PasswordResetForm} - /> - <Route - path='claim' - component={ClaimController} - > - <Route - path='oauth_to_email' - component={OAuthToEmail} - /> - <Route - path='email_to_oauth' - component={EmailToOAuth} - /> - <Route - path='email_to_ldap' - component={EmailToLDAP} - /> - <Route - path='ldap_to_email' - component={LDAPToEmail} - /> - </Route> - <Route - path='signup_user_complete' - component={SignupUserComplete} - /> - <Route - path='should_verify_email' - component={ShouldVerifyEmail} - /> - <Route - path='do_verify_email' - component={DoVerifyEmail} - /> - </Route> - <Route - component={LoggedIn} - onEnter={preLoggedIn} - > - <Route component={HeaderFooterTemplate}> - <Route - path='select_team' - component={SelectTeam} - /> - <Route - path='create_team' - component={CreateTeamController} - > - <IndexRoute component={CreateTeamDisplayName}/> - <Route - path='display_name' - component={CreateTeamDisplayName} - /> - <Route - path='team_url' - component={CreateTeamTeamUrl} - /> - </Route> - </Route> - <Route - path='admin_console' - component={AdminConsole} - > - <IndexRedirect to='system_analytics'/> - <Route - path='system_analytics' - component={SystemAnalytics} - /> - <Route path='general'> - <IndexRedirect to='configuration'/> - <Route - path='configuration' - component={ConfigurationSettings} - /> - <Route - path='localization' - component={LocalizationSettings} - /> - <Route - path='users_and_teams' - component={UsersAndTeamsSettings} - /> - <Route - path='privacy' - component={PrivacySettings} - /> - <Route - path='compliance' - component={ComplianceSettings} - /> - <Route - path='logging' - component={LogSettings} - /> - </Route> - <Route path='authentication'> - <IndexRedirect to='email'/> - <Route - path='email' - component={EmailAuthenticationSettings} - /> - <Route - path='gitlab' - component={GitLabSettings} - /> - <Route - path='ldap' - component={LdapSettings} - /> - </Route> - <Route path='security'> - <IndexRedirect to='sign_up'/> - <Route - path='sign_up' - component={SignupSettings} - /> - <Route - path='login' - component={LoginSettings} - /> - <Route - path='public_links' - component={PublicLinkSettings} - /> - <Route - path='sessions' - component={SessionSettings} - /> - <Route - path='connections' - component={ConnectionSettings} - /> - </Route> - <Route path='notifications'> - <IndexRedirect to='email'/> - <Route - path='email' - component={EmailSettings} - /> - <Route - path='push' - component={PushSettings} - /> - </Route> - <Route path='integrations'> - <IndexRedirect to='webhooks'/> - <Route - path='webhooks' - component={WebhookSettings} - /> - <Route - path='external' - component={ExternalServiceSettings} - /> - </Route> - <Route path='files'> - <IndexRedirect to='storage'/> - <Route - path='storage' - component={StorageSettings} - /> - <Route - path='images' - component={ImageSettings} - /> - </Route> - <Route path='customization'> - <IndexRedirect to='custom_brand'/> - <Route - path='custom_brand' - component={CustomBrandSettings} - /> - <Route - path='custom_emoji' - component={CustomEmojiSettings} - /> - <Route - path='legal_and_support' - component={LegalAndSupportSettings} - /> - </Route> - <Route path='advanced'> - <IndexRedirect to='rate'/> - <Route - path='rate' - component={RateSettings} - /> - <Route - path='database' - component={DatabaseSettings} - /> - <Route - path='developer' - component={DeveloperSettings} - /> - </Route> - <Route path='team'> - <Redirect - from=':team' - to=':team/users' - /> - <Route - path=':team/users' - component={TeamUsers} - /> - <Route - path=':team/analytics' - component={TeamAnalytics} - /> - <Redirect - from='*' - to='/error' - query={notFoundParams} - /> - </Route> - <Route - path='license' - component={LicenseSettings} - /> - <Route - path='audits' - component={Audits} - /> - <Route - path='logs' - component={Logs} - /> - </Route> - <Route - path=':team' - component={NeedsTeam} - onEnter={preNeedsTeam} - > - <IndexRedirect to='channels/town-square'/> - <Route - path='channels/:channel' - onEnter={onChannelEnter} - components={{ - sidebar: Sidebar, - center: ChannelView - }} - /> - <Route - path='pl/:postid' - onEnter={onPermalinkEnter} - components={{ - sidebar: Sidebar, - center: PermalinkView - }} - /> - <Route - path='tutorial' - components={{ - sidebar: Sidebar, - center: TutorialView - }} - /> - <Route path='settings/integrations'> - <IndexRoute - components={{ - navbar: BackstageNavbar, - sidebar: BackstageSidebar, - center: Integrations - }} - /> - <Route path='incoming_webhooks'> - <IndexRoute - components={{ - navbar: BackstageNavbar, - sidebar: BackstageSidebar, - center: InstalledIncomingWebhooks - }} - /> - <Route - path='add' - components={{ - navbar: BackstageNavbar, - sidebar: BackstageSidebar, - center: AddIncomingWebhook - }} - /> - </Route> - <Route path='outgoing_webhooks'> - <IndexRoute - components={{ - navbar: BackstageNavbar, - sidebar: BackstageSidebar, - center: InstalledOutgoingWebhooks - }} - /> - <Route - path='add' - components={{ - navbar: BackstageNavbar, - sidebar: BackstageSidebar, - center: AddOutgoingWebhook - }} - /> - </Route> - <Route path='commands'> - <IndexRoute - components={{ - navbar: BackstageNavbar, - sidebar: BackstageSidebar, - center: InstalledCommands - }} - /> - <Route - path='add' - components={{ - navbar: BackstageNavbar, - sidebar: BackstageSidebar, - center: AddCommand - }} - /> - </Route> - <Redirect - from='*' - to='/error' - query={notFoundParams} - /> - </Route> - </Route> - </Route> - <Redirect - from='*' - to='/error' - query={notFoundParams} - /> - </Route> - </Router> + routes={rRoot} + /> ), document.getElementById('root')); } |