Show quality indicator on me view. Fix "Me" text on me view on hover on extra videos and screen sharing.

auto_join_3.3
Håvar Aambø Fosstveit 2020-05-10 23:08:43 +02:00
parent 7ab388a714
commit a7557e3e15
3 changed files with 105 additions and 87 deletions

View File

@ -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

View File

@ -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={

View File

@ -152,6 +152,7 @@ class VideoView extends React.PureComponent
{ {
const { const {
isMe, isMe,
showQuality,
isScreen, isScreen,
displayName, displayName,
showPeerInfo, showPeerInfo,
@ -177,58 +178,63 @@ class VideoView extends React.PureComponent
videoHeight videoHeight
} = this.state; } = this.state;
let quality = <SignalCellularOffIcon style={{ color: red[500] }}/>; let quality = null;
if (videoScore || audioScore) if (showQuality)
{ {
const score = videoScore ? videoScore : audioScore; quality = <SignalCellularOffIcon style={{ color: red[500] }}/>;
switch (score.producerScore) if (videoScore || audioScore)
{ {
case 0: const score = videoScore ? videoScore : audioScore;
case 1:
switch (isMe ? score.score : score.producerScore)
{ {
quality = <SignalCellular0BarIcon style={{ color: red[500] }}/>; case 0:
case 1:
{
quality = <SignalCellular0BarIcon style={{ color: red[500] }}/>;
break; break;
} }
case 2: case 2:
case 3: case 3:
{ {
quality = <SignalCellular1BarIcon style={{ color: red[500] }}/>; quality = <SignalCellular1BarIcon style={{ color: red[500] }}/>;
break; break;
} }
case 4: case 4:
case 5: case 5:
case 6: case 6:
{ {
quality = <SignalCellular2BarIcon style={{ color: orange[500] }}/>; quality = <SignalCellular2BarIcon style={{ color: orange[500] }}/>;
break; break;
} }
case 7: case 7:
case 8: case 8:
case 9: case 9:
{ {
quality = <SignalCellular3BarIcon style={{ color: yellow[500] }}/>; quality = <SignalCellular3BarIcon style={{ color: yellow[500] }}/>;
break; break;
} }
case 10: case 10:
{ {
quality = null; quality = null;
break; break;
} }
default: default:
{ {
break; break;
}
} }
} }
} }
@ -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,