For the most part the changes are taking the "static propTypes" declaration off of components and declaring them as Flow types. Sometimes to support flow some method signatures had to be added. There are some exceptions in which more had to be done to tame the beast: - AbstractVideoTrack: put in additional truthy checks for videoTrack. - Video: add truthy checks for the _videoElement ref. - shouldRenderVideoTrack function: Some component could pass null for the videoTrack argument and Flow wanted that called out explicitly. - DisplayName: Add a truthy check for the input ref before acting on it. - NumbersList: Move array checks inline for Flow to comprehend array methods could be called. Add type checks in the Object.entries loop as the value is assumed to be a mixed type by Flow. - AbstractToolbarButton: add additional truthy check for passed in type.
58 lines
1.3 KiB
JavaScript
58 lines
1.3 KiB
JavaScript
/* @flow */
|
|
|
|
import { Component } from 'react';
|
|
|
|
/**
|
|
* The type of the React {@code Component} props of
|
|
* {@link AbstractUserMediaPermissionsOverlay}.
|
|
*/
|
|
type Props = {
|
|
|
|
/**
|
|
* The browser which is used currently. The text is different for every
|
|
* browser.
|
|
*/
|
|
browser: string,
|
|
|
|
/**
|
|
* The function to translate human-readable text.
|
|
*/
|
|
t: Function
|
|
};
|
|
|
|
/**
|
|
* Implements a React {@link Component} for overlay with guidance how to proceed
|
|
* with gUM prompt.
|
|
*/
|
|
export default class AbstractUserMediaPermissionsOverlay
|
|
extends Component<Props> {
|
|
/**
|
|
* Determines whether this overlay needs to be rendered (according to a
|
|
* specific redux state). Called by {@link OverlayContainer}.
|
|
*
|
|
* @param {Object} state - The redux state.
|
|
* @returns {boolean} - If this overlay needs to be rendered, {@code true};
|
|
* {@code false}, otherwise.
|
|
*/
|
|
static needsRender(state: Object) {
|
|
return state['features/overlay'].isMediaPermissionPromptVisible;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Maps (parts of) the redux state to the associated component's props.
|
|
*
|
|
* @param {Object} state - The redux state.
|
|
* @protected
|
|
* @returns {{
|
|
* browser: string
|
|
* }}
|
|
*/
|
|
export function abstractMapStateToProps(state: Object) {
|
|
const { browser } = state['features/overlay'];
|
|
|
|
return {
|
|
browser
|
|
};
|
|
}
|