123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { appInit } from '../actions';
- import { AbstractApp } from './AbstractApp';
-
- /**
- * Root application component.
- *
- * @extends AbstractApp
- */
- export class App extends AbstractApp {
- /**
- * App component's property types.
- *
- * @static
- */
- static propTypes = AbstractApp.propTypes
-
- /**
- * Inits the app before component will mount.
- *
- * @inheritdoc
- */
- componentWillMount(...args) {
- super.componentWillMount(...args);
-
- this._getStore().dispatch(appInit());
- }
-
- /**
- * Gets a Location object from the window with information about the current
- * location of the document.
- *
- * @inheritdoc
- */
- _getWindowLocation() {
- return window.location;
- }
-
- /**
- * Navigates to a specific Route (via platform-specific means).
- *
- * @param {Route} route - The Route to which to navigate.
- * @protected
- * @returns {void}
- */
- _navigate(route) {
- let path = route.path;
- const store = this._getStore();
-
- // The syntax :room bellow is defined by react-router. It "matches a URL
- // segment up to the next /, ?, or #. The matched string is called a
- // param."
- path
- = path.replace(
- /:room/g,
- store.getState()['features/base/conference'].room);
-
- // Navigate to the specified Route.
- const windowLocation = this._getWindowLocation();
-
- if (windowLocation.pathname === path) {
- // The browser is at the specified path already and what remains is
- // to make this App instance aware of the route to be rendered at
- // the current location.
- super._navigate(route);
- } else {
- // The browser must go to the specified location. Once the specified
- // location becomes current, the App will be made aware of the route
- // to be rendered at it.
- windowLocation.pathname = path;
- }
- }
- }
|