123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // @flow
-
- import {
- PageReloadFilmstripOnlyOverlay,
- PageReloadOverlay,
- SuspendedFilmstripOnlyOverlay,
- SuspendedOverlay,
- UserMediaPermissionsFilmstripOnlyOverlay,
- UserMediaPermissionsOverlay
- } from './components';
-
- declare var interfaceConfig: Object;
-
- /**
- * Returns the list of available overlays that might be rendered.
- *
- * @private
- * @returns {Array<?React$ComponentType<*>>}
- */
- function _getOverlays() {
- const filmstripOnly
- = typeof interfaceConfig === 'object' && interfaceConfig.filmStripOnly;
- let overlays;
-
- if (filmstripOnly) {
- overlays = [
- PageReloadFilmstripOnlyOverlay,
- SuspendedFilmstripOnlyOverlay,
- UserMediaPermissionsFilmstripOnlyOverlay
- ];
- } else {
- overlays = [
- PageReloadOverlay
- ];
- }
-
- // Mobile only has a PageReloadOverlay.
- if (navigator.product !== 'ReactNative') {
- overlays.push(...[
- SuspendedOverlay,
- UserMediaPermissionsOverlay
- ]);
- }
-
- return overlays;
- }
-
- /**
- * Returns the overlay to be currently rendered.
- *
- * @param {Object} state - The Redux state.
- * @returns {?React$ComponentType<*>}
- */
- export function getOverlayToRender(state: Object) {
- for (const overlay of _getOverlays()) {
- // react-i18n / react-redux wrap components and thus we cannot access
- // the wrapped component's static methods directly.
- const component = overlay.WrappedComponent || overlay;
-
- if (component.needsRender(state)) {
- return overlay;
- }
- }
-
- return undefined;
- }
|