37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
/* eslint-disable lines-around-comment */
|
|
|
|
import { IReduxState } from '../app/types';
|
|
|
|
// @ts-ignore
|
|
import PageReloadOverlay from './components/web/PageReloadOverlay';
|
|
// @ts-ignore
|
|
import SuspendedOverlay from './components/web/SuspendedOverlay';
|
|
// @ts-ignore
|
|
import UserMediaPermissionsOverlay from './components/web/UserMediaPermissionsOverlay';
|
|
/**
|
|
* Returns the overlay to be currently rendered.
|
|
*
|
|
* @param {IReduxState} state - The Redux state.
|
|
* @returns {?React$ComponentType<*>}
|
|
*/
|
|
export function getOverlayToRender(state: IReduxState) {
|
|
const overlays = [
|
|
PageReloadOverlay,
|
|
SuspendedOverlay,
|
|
UserMediaPermissionsOverlay
|
|
];
|
|
|
|
for (const overlay of overlays) {
|
|
// react-i18n / react-redux wrap components and thus we cannot access
|
|
// the wrapped component's static methods directly.
|
|
// @ts-ignore
|
|
const component = overlay.WrappedComponent || overlay;
|
|
|
|
if (component.needsRender(state)) {
|
|
return overlay;
|
|
}
|
|
}
|
|
|
|
return undefined;
|
|
}
|