| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 
							- // @flow
 - 
 - import { toState } from '../base/redux';
 - import { getDeepLinkingPage } from '../deep-linking';
 - import { UnsupportedDesktopBrowser } from '../unsupported-browser';
 - 
 - import {
 -     // eslint-disable-next-line camelcase
 -     _getRouteToRender as _super_getRouteToRender
 - } from './getRouteToRender';
 - 
 - declare var APP: Object;
 - declare var interfaceConfig: Object;
 - declare var loggingConfig: Object;
 - 
 - /**
 -  * Array of rules defining whether we should {@link _interceptComponent} to
 -  * render.
 -  *
 -  * @private
 -  * @param {Object} state - Object containing current redux state.
 -  * @returns {Promise<ReactElement>|void}
 -  * @type {Function[]}
 -  */
 - const _INTERCEPT_COMPONENT_RULES = [
 -     getDeepLinkingPage,
 -     state => {
 -         const { webRTCReady } = state['features/base/lib-jitsi-meet'];
 - 
 -         if (webRTCReady === false) {
 -             return Promise.resolve(UnsupportedDesktopBrowser);
 -         }
 - 
 -         return Promise.resolve();
 -     }
 - ];
 - 
 - export * from './functions.any';
 - 
 - /**
 -  * Determines which route is to be rendered in order to depict a specific redux
 -  * store.
 -  *
 -  * @param {(Object|Function)} stateOrGetState - The redux state or
 -  * {@link getState} function.
 -  * @returns {Promise<Route>}
 -  */
 - export function _getRouteToRender(stateOrGetState: Object | Function): Object {
 -     const route = _super_getRouteToRender(stateOrGetState);
 - 
 -     // Intercepts route components if any of component interceptor rules is
 -     // satisfied.
 -     return _interceptComponent(stateOrGetState, route.component).then(
 -         (component: React$Element<*>) => {
 -             route.component = component;
 - 
 -             return route;
 -         }, () => Promise.resolve(route));
 - }
 - 
 - /**
 -  * Intercepts route components based on a {@link _INTERCEPT_COMPONENT_RULES}.
 -  *
 -  * @param {Object|Function} stateOrGetState - The redux state or
 -  * {@link getState} function.
 -  * @param {ReactElement} component - Current route component to render.
 -  * @private
 -  * @returns {Promise<ReactElement>} If any of the pre-defined rules is
 -  * satisfied, returns intercepted component.
 -  */
 - function _interceptComponent(
 -         stateOrGetState: Object | Function,
 -         component: React$Element<*>) {
 -     const state = toState(stateOrGetState);
 - 
 -     const promises = [];
 - 
 -     _INTERCEPT_COMPONENT_RULES.forEach(rule => {
 -         promises.push(rule(state));
 -     });
 - 
 -     return Promise.all(promises).then(
 -         results =>
 -             results.find(result => typeof result !== 'undefined') || component,
 -         () => Promise.resolve(component));
 - }
 - 
 - /**
 -  * Returns application name.
 -  *
 -  * @returns {string} The application name.
 -  */
 - export function getName() {
 -     return interfaceConfig.APP_NAME;
 - }
 
 
  |