mirror of https://github.com/jitsi/jitsi-meet
Do the selection in mapStateToProps so the container itself doesn't need to receive all the props that each overlay needs. Each overlay is responsible for fetching their own props and for providing a "needsDisplay" static method wich will be called with the full redux state and should return true if the overlay needs displaying. Also eliminate duplicated state keeping: the connection and conference error states can be fetched from their respective base features.pull/2198/head
parent
d0859b3ce1
commit
38629b437d
@ -0,0 +1,45 @@ |
||||
import PropTypes from 'prop-types'; |
||||
import { Component } from 'react'; |
||||
|
||||
/** |
||||
* Implements a React Component for suspended overlay. Shown when a suspend is |
||||
* detected. |
||||
*/ |
||||
export default class AbstractSuspendedOverlay extends Component { |
||||
/** |
||||
* SuspendedOverlay component's property types. |
||||
* |
||||
* @static |
||||
*/ |
||||
static propTypes = { |
||||
/** |
||||
* The function to translate human-readable text. |
||||
* |
||||
* @public |
||||
* @type {Function} |
||||
*/ |
||||
t: PropTypes.func |
||||
}; |
||||
|
||||
/** |
||||
* Check if this overlay needs to be rendered. This function will be called |
||||
* by the {@code OverlayContainer}. |
||||
* |
||||
* @param {Object} state - The redux state. |
||||
* @returns {boolean} - True if this overlay needs to be rendered, false |
||||
* otherwise. |
||||
*/ |
||||
static needsRender(state) { |
||||
return state['features/overlay'].suspendDetected; |
||||
} |
||||
|
||||
/** |
||||
* Implements React's {@link Component#render()}. |
||||
* |
||||
* @inheritdoc |
||||
* @returns {ReactElement|null} |
||||
*/ |
||||
render() { |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,72 @@ |
||||
import PropTypes from 'prop-types'; |
||||
import { Component } from 'react'; |
||||
|
||||
|
||||
/** |
||||
* Implements a React Component for overlay with guidance how to proceed with |
||||
* gUM prompt. |
||||
*/ |
||||
export default class AbstractUserMediaPermissionsOverlay extends Component { |
||||
/** |
||||
* UserMediaPermissionsOverlay component's property types. |
||||
* |
||||
* @static |
||||
*/ |
||||
static propTypes = { |
||||
/** |
||||
* The browser which is used currently. The text is different for every |
||||
* browser. |
||||
* |
||||
* @public |
||||
* @type {string} |
||||
*/ |
||||
browser: PropTypes.string, |
||||
|
||||
/** |
||||
* The function to translate human-readable text. |
||||
* |
||||
* @public |
||||
* @type {Function} |
||||
*/ |
||||
t: PropTypes.func |
||||
}; |
||||
|
||||
/** |
||||
* Check if this overlay needs to be rendered. This function will be called |
||||
* by the {@code OverlayContainer}. |
||||
* |
||||
* @param {Object} state - The redux state. |
||||
* @returns {boolean} - True if this overlay needs to be rendered, false |
||||
* otherwise. |
||||
*/ |
||||
static needsRender(state) { |
||||
return state['features/overlay'].isMediaPermissionPromptVisible; |
||||
} |
||||
|
||||
/** |
||||
* Implements React's {@link Component#render()}. |
||||
* |
||||
* @inheritdoc |
||||
* @returns {ReactElement|null} |
||||
*/ |
||||
render() { |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Maps (parts of) the redux state to the associated component's props. |
||||
* |
||||
* @param {Object} state - The redux state. |
||||
* @returns {{ |
||||
* browser: string |
||||
* }} |
||||
* @protected |
||||
*/ |
||||
export function abstractMapStateToProps(state) { |
||||
const { browser } = state['features/overlay']; |
||||
|
||||
return { |
||||
browser |
||||
}; |
||||
} |
Loading…
Reference in new issue