Show quality indicator on me view. Fix "Me" text on me view on hover on extra videos and screen sharing.
parent
7ab388a714
commit
a7557e3e15
|
|
@ -290,6 +290,28 @@ const Me = (props) =>
|
||||||
'margin' : spacing
|
'margin' : spacing
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let audioScore = null;
|
||||||
|
|
||||||
|
if (micProducer && micProducer.score)
|
||||||
|
{
|
||||||
|
audioScore =
|
||||||
|
micProducer.score.reduce(
|
||||||
|
(prev, curr) =>
|
||||||
|
(prev.score < curr.score ? prev : curr)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let videoScore = null;
|
||||||
|
|
||||||
|
if (webcamProducer && webcamProducer.score)
|
||||||
|
{
|
||||||
|
videoScore =
|
||||||
|
webcamProducer.score.reduce(
|
||||||
|
(prev, curr) =>
|
||||||
|
(prev.score < curr.score ? prev : curr)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<div
|
<div
|
||||||
|
|
@ -576,6 +598,7 @@ const Me = (props) =>
|
||||||
|
|
||||||
<VideoView
|
<VideoView
|
||||||
isMe
|
isMe
|
||||||
|
VideoView
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
peer={me}
|
peer={me}
|
||||||
displayName={settings.displayName}
|
displayName={settings.displayName}
|
||||||
|
|
@ -584,6 +607,8 @@ const Me = (props) =>
|
||||||
videoVisible={videoVisible}
|
videoVisible={videoVisible}
|
||||||
audioCodec={micProducer && micProducer.codec}
|
audioCodec={micProducer && micProducer.codec}
|
||||||
videoCodec={webcamProducer && webcamProducer.codec}
|
videoCodec={webcamProducer && webcamProducer.codec}
|
||||||
|
audioScore={audioScore}
|
||||||
|
videoScore={videoScore}
|
||||||
onChangeDisplayName={(displayName) =>
|
onChangeDisplayName={(displayName) =>
|
||||||
{
|
{
|
||||||
roomClient.changeDisplayName(displayName);
|
roomClient.changeDisplayName(displayName);
|
||||||
|
|
@ -627,6 +652,18 @@ const Me = (props) =>
|
||||||
style={spacingStyle}
|
style={spacingStyle}
|
||||||
>
|
>
|
||||||
<div className={classes.viewContainer} style={style}>
|
<div className={classes.viewContainer} style={style}>
|
||||||
|
<p className={
|
||||||
|
classnames(
|
||||||
|
classes.meTag,
|
||||||
|
hover ? 'hover' : null,
|
||||||
|
smallContainer ? 'smallContainer' : null
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<FormattedMessage
|
||||||
|
id='room.me'
|
||||||
|
defaultMessage='ME'
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
<div
|
<div
|
||||||
className={classnames(
|
className={classnames(
|
||||||
classes.controls,
|
classes.controls,
|
||||||
|
|
@ -653,13 +690,6 @@ const Me = (props) =>
|
||||||
}, 2000);
|
}, 2000);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<p className={hover ? 'hover' : null}>
|
|
||||||
<FormattedMessage
|
|
||||||
id='room.me'
|
|
||||||
defaultMessage='ME'
|
|
||||||
/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<Tooltip title={webcamTip} placement='left'>
|
<Tooltip title={webcamTip} placement='left'>
|
||||||
{ smallContainer ?
|
{ smallContainer ?
|
||||||
<IconButton
|
<IconButton
|
||||||
|
|
@ -742,40 +772,18 @@ const Me = (props) =>
|
||||||
style={spacingStyle}
|
style={spacingStyle}
|
||||||
>
|
>
|
||||||
<div className={classes.viewContainer} style={style}>
|
<div className={classes.viewContainer} style={style}>
|
||||||
<div
|
<p className={
|
||||||
className={classnames(
|
classnames(
|
||||||
classes.controls,
|
classes.meTag,
|
||||||
settings.hiddenControls ? 'hide' : null,
|
hover ? 'hover' : null,
|
||||||
hover ? 'hover' : null
|
smallContainer ? 'smallContainer' : null
|
||||||
)}
|
)}
|
||||||
onMouseOver={() => setHover(true)}
|
|
||||||
onMouseOut={() => setHover(false)}
|
|
||||||
onTouchStart={() =>
|
|
||||||
{
|
|
||||||
if (touchTimeout)
|
|
||||||
clearTimeout(touchTimeout);
|
|
||||||
|
|
||||||
setHover(true);
|
|
||||||
}}
|
|
||||||
onTouchEnd={() =>
|
|
||||||
{
|
|
||||||
|
|
||||||
if (touchTimeout)
|
|
||||||
clearTimeout(touchTimeout);
|
|
||||||
|
|
||||||
touchTimeout = setTimeout(() =>
|
|
||||||
{
|
|
||||||
setHover(false);
|
|
||||||
}, 2000);
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<p className={hover ? 'hover' : null}>
|
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='room.me'
|
id='room.me'
|
||||||
defaultMessage='ME'
|
defaultMessage='ME'
|
||||||
/>
|
/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
|
||||||
|
|
||||||
<VideoView
|
<VideoView
|
||||||
isMe
|
isMe
|
||||||
|
|
|
||||||
|
|
@ -394,6 +394,7 @@ const Peer = (props) =>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<VideoView
|
<VideoView
|
||||||
|
showQuality
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
peer={peer}
|
peer={peer}
|
||||||
displayName={peer.displayName}
|
displayName={peer.displayName}
|
||||||
|
|
@ -589,6 +590,7 @@ const Peer = (props) =>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<VideoView
|
<VideoView
|
||||||
|
showQuality
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
peer={peer}
|
peer={peer}
|
||||||
displayName={peer.displayName}
|
displayName={peer.displayName}
|
||||||
|
|
@ -730,6 +732,7 @@ const Peer = (props) =>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
<VideoView
|
<VideoView
|
||||||
|
showQuality
|
||||||
advancedMode={advancedMode}
|
advancedMode={advancedMode}
|
||||||
videoContain
|
videoContain
|
||||||
consumerSpatialLayers={
|
consumerSpatialLayers={
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,7 @@ class VideoView extends React.PureComponent
|
||||||
{
|
{
|
||||||
const {
|
const {
|
||||||
isMe,
|
isMe,
|
||||||
|
showQuality,
|
||||||
isScreen,
|
isScreen,
|
||||||
displayName,
|
displayName,
|
||||||
showPeerInfo,
|
showPeerInfo,
|
||||||
|
|
@ -177,13 +178,17 @@ class VideoView extends React.PureComponent
|
||||||
videoHeight
|
videoHeight
|
||||||
} = this.state;
|
} = this.state;
|
||||||
|
|
||||||
let quality = <SignalCellularOffIcon style={{ color: red[500] }}/>;
|
let quality = null;
|
||||||
|
|
||||||
|
if (showQuality)
|
||||||
|
{
|
||||||
|
quality = <SignalCellularOffIcon style={{ color: red[500] }}/>;
|
||||||
|
|
||||||
if (videoScore || audioScore)
|
if (videoScore || audioScore)
|
||||||
{
|
{
|
||||||
const score = videoScore ? videoScore : audioScore;
|
const score = videoScore ? videoScore : audioScore;
|
||||||
|
|
||||||
switch (score.producerScore)
|
switch (isMe ? score.score : score.producerScore)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
|
|
@ -232,6 +237,7 @@ class VideoView extends React.PureComponent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classes.root}>
|
<div className={classes.root}>
|
||||||
|
|
@ -258,7 +264,7 @@ class VideoView extends React.PureComponent
|
||||||
<p>{videoWidth}x{videoHeight}</p>
|
<p>{videoWidth}x{videoHeight}</p>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
{ !isMe &&
|
{ showQuality &&
|
||||||
<div className={classnames(classes.box, 'right')}>
|
<div className={classnames(classes.box, 'right')}>
|
||||||
{
|
{
|
||||||
quality
|
quality
|
||||||
|
|
@ -438,6 +444,7 @@ class VideoView extends React.PureComponent
|
||||||
VideoView.propTypes =
|
VideoView.propTypes =
|
||||||
{
|
{
|
||||||
isMe : PropTypes.bool,
|
isMe : PropTypes.bool,
|
||||||
|
showQuality : PropTypes.bool,
|
||||||
isScreen : PropTypes.bool,
|
isScreen : PropTypes.bool,
|
||||||
displayName : PropTypes.string,
|
displayName : PropTypes.string,
|
||||||
showPeerInfo : PropTypes.bool,
|
showPeerInfo : PropTypes.bool,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue