jitsi-meet/react/features/base/util/interceptComponent.js
Lyubomir Marinov 88eabf23f4 Remove obsolete UnsupportedMobileBrowser functionality
The desired behavior of the button 'Start a conference' / 'Join the
conversation' is to launch the mobile app if installed; otherwise, do
nothing i.e. continue to display UnsupportedMobileBrowser.

Anyway, we may change our minds about allowing the user to continue in a
supported mobile browser so preserve the source code that enables that
but give it more appropriate naming.
2017-01-27 21:29:09 -06:00

58 lines
1.6 KiB
JavaScript

import { Platform } from '../react';
import { UnsupportedMobileBrowser } from '../../unsupported-browser';
/**
* Array of rules defining whether we should intercept component to render
* or not.
*
* @type {Array<Function>}
* @param {Object} state - Redux state object.
* @returns {ReactElement|void}
*/
const RULES = [
/**
* This rule describes case when user opens application using mobile
* browser. In order to promote the app, we choose to suggest the mobile
* app even if the browser supports the app (e.g. Google Chrome with
* WebRTC support on Android).
*
* @returns {UnsupportedMobileBrowser|void} If the rule is satisfied then
* we should intercept existing component by UnsupportedMobileBrowser.
*/
() => {
const OS = Platform.OS;
if (OS === 'android' || OS === 'ios') {
return UnsupportedMobileBrowser;
}
}
];
/**
* Utility method that responsible for intercepting of route components based on
* the set of defined rules.
*
* @param {Object|Function} stateOrGetState - Either Redux state object or
* getState() function.
* @param {ReactElement} currentComponent - Current route component to render.
* @returns {ReactElement} If any of rules is satisfied returns intercepted
* component.
*/
export function interceptComponent(stateOrGetState, currentComponent) {
let result;
const state
= typeof stateOrGetState === 'function'
? stateOrGetState()
: stateOrGetState;
for (const rule of RULES) {
result = rule(state);
if (result) {
break;
}
}
return result || currentComponent;
}