2018-05-22 19:47:10 +00:00
|
|
|
// @flow
|
|
|
|
|
|
|
|
import React from 'react';
|
|
|
|
|
|
|
|
import { translate } from '../../base/i18n';
|
|
|
|
import { CircularLabel } from '../../base/label';
|
2019-03-21 16:38:29 +00:00
|
|
|
import { connect } from '../../base/redux';
|
2018-05-22 19:47:10 +00:00
|
|
|
import { combineStyles, type StyleType } from '../../base/styles';
|
|
|
|
|
|
|
|
import AbstractVideoQualityLabel, {
|
|
|
|
_abstractMapStateToProps,
|
|
|
|
type Props as AbstractProps
|
|
|
|
} from './AbstractVideoQualityLabel';
|
|
|
|
import styles from './styles';
|
|
|
|
|
|
|
|
type Props = AbstractProps & {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Style of the component passed as props.
|
|
|
|
*/
|
|
|
|
style: ?StyleType
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* React {@code Component} responsible for displaying a label that indicates
|
|
|
|
* the displayed video state of the current conference.
|
|
|
|
*
|
|
|
|
* NOTE: Due to the lack of actual video quality information on mobile side,
|
|
|
|
* this component currently only displays audio only indicator, but the naming
|
|
|
|
* is kept consistent with web and in the future we may introduce the required
|
|
|
|
* api and extend this component with actual quality indication.
|
|
|
|
*/
|
|
|
|
class VideoQualityLabel extends AbstractVideoQualityLabel<Props> {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Implements React {@link Component}'s render.
|
|
|
|
*
|
|
|
|
* @inheritdoc
|
|
|
|
*/
|
|
|
|
render() {
|
|
|
|
const { _audioOnly, style, t } = this.props;
|
|
|
|
|
|
|
|
if (!_audioOnly) {
|
|
|
|
// We don't have info about the quality so no need for the indicator
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<CircularLabel
|
|
|
|
label = { t('videoStatus.audioOnly') }
|
|
|
|
style = {
|
|
|
|
combineStyles(styles.indicatorAudioOnly, style)
|
|
|
|
} />
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Maps (parts of) the Redux state to the associated
|
|
|
|
* {@code VideoQualityLabel}'s props.
|
|
|
|
*
|
|
|
|
* NOTE: This component has no props other than the abstract ones but keeping
|
|
|
|
* the coding style the same for consistency reasons.
|
|
|
|
*
|
|
|
|
* @param {Object} state - The Redux state.
|
|
|
|
* @private
|
|
|
|
* @returns {{
|
|
|
|
* }}
|
|
|
|
*/
|
|
|
|
function _mapStateToProps(state: Object) {
|
|
|
|
return {
|
|
|
|
..._abstractMapStateToProps(state)
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export default translate(connect(_mapStateToProps)(VideoQualityLabel));
|