mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-18 19:27:46 +00:00
Unfortunately, as the Jitsi Meet development evolved the routing mechanism became more complex and thre logic ended up spread across multiple parts of the codebase, which made it hard to follow and extend. This change aims to fix that by rewriting the routing logic and centralizing it in (pretty much) a single place, with no implicit inter-dependencies. In order to arrive there, however, some extra changes were needed, which were not caught early enough and are thus part of this change: - JitsiMeetJS initialization is now synchronous: there is nothing async about it, and the only async requirement (Temasys support) was lifted. See [0]. - WebRTC support can be detected early: building on top of the above, WebRTC support can now be detected immediately, so take advantage of this to simplify how we handle unsupported browsers. See [0]. The new router takes decissions based on the Redux state at the time of invocation. A route can be represented by either a component or a URl reference, with the latter taking precedence. On mobile, obviously, there is no concept of URL reference so routing is based solely on components. [0]: https://github.com/jitsi/lib-jitsi-meet/pull/779
52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
// @flow
|
|
|
|
import { getAppProp } from '../app';
|
|
import { toState } from '../base/redux';
|
|
|
|
declare var APP: Object;
|
|
declare var config: Object;
|
|
|
|
export * from './roomnameGenerator';
|
|
|
|
/**
|
|
* Determines whether the {@code WelcomePage} is enabled by the app itself
|
|
* (e.g. programmatically via the Jitsi Meet SDK for Android and iOS). Not to be
|
|
* confused with {@link isWelcomePageUserEnabled}.
|
|
*
|
|
* @param {Function|Object} stateful - The redux state or {@link getState}
|
|
* function.
|
|
* @returns {boolean} If the {@code WelcomePage} is enabled by the app, then
|
|
* {@code true}; otherwise, {@code false}.
|
|
*/
|
|
export function isWelcomePageAppEnabled(stateful: Function | Object) {
|
|
if (navigator.product === 'ReactNative') {
|
|
// We introduced the welcomePageEnabled prop on App in Jitsi Meet SDK
|
|
// for Android and iOS. There isn't a strong reason not to introduce it
|
|
// on Web but there're a few considerations to be taken before I go
|
|
// there among which:
|
|
// - Enabling/disabling the Welcome page on Web historically
|
|
// automatically redirects to a random room and that does not make sense
|
|
// on mobile (right now).
|
|
return Boolean(getAppProp(stateful, 'welcomePageEnabled'));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Determines whether the {@code WelcomePage} is enabled by the user either
|
|
* herself or through her deployment config(uration). Not to be confused with
|
|
* {@link isWelcomePageAppEnabled}.
|
|
*
|
|
* @param {Function|Object} stateful - The redux state or {@link getState}
|
|
* function.
|
|
* @returns {boolean} If the {@code WelcomePage} is enabled by the user, then
|
|
* {@code true}; otherwise, {@code false}.
|
|
*/
|
|
export function isWelcomePageUserEnabled(stateful: Function | Object) {
|
|
return (
|
|
typeof APP === 'undefined'
|
|
? true
|
|
: toState(stateful)['features/base/config'].enableWelcomePage);
|
|
}
|