diff --git a/app/src/components/Containers/Peer.js b/app/src/components/Containers/Peer.js
index 3bb39d4..ec891bd 100644
--- a/app/src/components/Containers/Peer.js
+++ b/app/src/components/Containers/Peer.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import classnames from 'classnames';
@@ -18,13 +18,35 @@ import FullScreenIcon from '@material-ui/icons/Fullscreen';
const styles = (theme) =>
({
root :
+ {
+ overflow : 'hidden',
+ flex : '0 0 auto',
+ margin : 6,
+ boxShadow : 'var(--peer-shadow)',
+ border : 'var(--peer-border)',
+ touchAction : 'none',
+ '&.webcam' :
+ {
+ order : 2
+ },
+ '&.screen' :
+ {
+ order : 1
+ },
+ '&.hover' :
+ {
+ boxShadow : '0px 1px 3px rgba(0, 0, 0, 0.05) inset, 0px 0px 8px rgba(82, 168, 236, 0.9)'
+ }
+ },
+ peerContainer :
{
width : '100%',
height : '100%',
display : 'flex',
flexDirection : 'row',
flex : '100 100 auto',
- position : 'relative'
+ position : 'relative',
+ touchAction : 'none'
},
fab :
{
@@ -58,7 +80,8 @@ const styles = (theme) =>
zIndex : 20,
opacity : 0,
transition : 'opacity 0.3s',
- '&:hover' :
+ touchAction : 'none',
+ '&.hover' :
{
opacity : 1
}
@@ -111,6 +134,16 @@ const styles = (theme) =>
const Peer = (props) =>
{
+ const [ hover, setHover ] = useState(false);
+ const [ webcamHover, setWebcamHover ] = useState(false);
+ const [ screenHover, setScreenHover ] = useState(false);
+
+ let touchTimeout = null;
+
+ let touchWebcamTimeout = null;
+
+ let touchScreenTimeout = null;
+
const {
roomClient,
advancedMode,
@@ -157,136 +190,234 @@ const Peer = (props) =>
const smallScreen = useMediaQuery(theme.breakpoints.down('sm'));
return (
-
- { videoVisible && !webcamConsumer.supported ?
-
- :null
- }
+
+ setHover(true)}
+ onMouseOut={() => setHover(false)}
+ onTouchStart={() =>
+ {
+ if (touchTimeout)
+ clearTimeout(touchTimeout);
- { !videoVisible ?
-
- :null
- }
+ setHover(true);
+ }}
+ onTouchEnd={() =>
+ {
+ if (touchTimeout)
+ clearTimeout(touchTimeout);
-
-
-
- {
- micEnabled ?
- roomClient.modifyPeerConsumer(peer.name, 'mic', true) :
- roomClient.modifyPeerConsumer(peer.name, 'mic', false);
- }}
- >
- { micEnabled ?
-
- :
-
- }
-
-
- { !smallScreen ?
-
- {
- toggleConsumerWindow(webcamConsumer);
- }}
- >
-
-
+ touchTimeout = setTimeout(() =>
+ {
+ setHover(false);
+ }, 2000);
+ }}
+ >
+
+ { videoVisible && !webcamConsumer.supported ?
+
:null
}
-
- {
- toggleConsumerFullscreen(webcamConsumer);
- }}
- >
-
-
-
+ { !videoVisible ?
+
+ :null
+ }
-
+
+
setWebcamHover(true)}
+ onMouseOut={() => setWebcamHover(false)}
+ onTouchStart={() =>
+ {
+ if (touchWebcamTimeout)
+ clearTimeout(touchWebcamTimeout);
+
+ setWebcamHover(true);
+ }}
+ onTouchEnd={() =>
+ {
+ if (touchWebcamTimeout)
+ clearTimeout(touchWebcamTimeout);
+
+ touchWebcamTimeout = setTimeout(() =>
+ {
+ setWebcamHover(false);
+ }, 2000);
+ }}
+ >
+
+ {
+ micEnabled ?
+ roomClient.modifyPeerConsumer(peer.name, 'mic', true) :
+ roomClient.modifyPeerConsumer(peer.name, 'mic', false);
+ }}
+ >
+ { micEnabled ?
+
+ :
+
+ }
+
+
+ { !smallScreen ?
+
+ {
+ toggleConsumerWindow(webcamConsumer);
+ }}
+ >
+
+
+ :null
+ }
+
+
+ {
+ toggleConsumerFullscreen(webcamConsumer);
+ }}
+ >
+
+
+
+
+
+
+
{ screenConsumer ?
-
-
- { !smallScreen ?
-
- {
- toggleConsumerWindow(screenConsumer);
- }}
- >
-
-
+
setHover(true)}
+ onMouseOut={() => setHover(false)}
+ onTouchStart={() =>
+ {
+ if (touchTimeout)
+ clearTimeout(touchTimeout);
+
+ setHover(true);
+ }}
+ onTouchEnd={() =>
+ {
+ if (touchTimeout)
+ clearTimeout(touchTimeout);
+
+ touchTimeout = setTimeout(() =>
+ {
+ setHover(false);
+ }, 2000);
+ }}
+ >
+
+ { screenVisible && !screenConsumer.supported ?
+
:null
}
-
- {
- toggleConsumerFullscreen(screenConsumer);
- }}
- >
-
-
+ { !screenVisible ?
+
+ :null
+ }
+
+
setScreenHover(true)}
+ onMouseOut={() => setScreenHover(false)}
+ onTouchStart={() =>
+ {
+ if (touchScreenTimeout)
+ clearTimeout(touchScreenTimeout);
+
+ setScreenHover(true);
+ }}
+ onTouchEnd={() =>
+ {
+
+ if (touchScreenTimeout)
+ clearTimeout(touchScreenTimeout);
+
+ touchScreenTimeout = setTimeout(() =>
+ {
+ setScreenHover(false);
+ }, 2000);
+ }}
+ >
+ { !smallScreen ?
+
+ {
+ toggleConsumerWindow(screenConsumer);
+ }}
+ >
+
+
+ :null
+ }
+
+
+ {
+ toggleConsumerFullscreen(screenConsumer);
+ }}
+ >
+
+
+
+
+
-
:null
}
-
+
);
};
diff --git a/app/src/components/MeetingViews/Democratic.js b/app/src/components/MeetingViews/Democratic.js
index 84efee3..9ab7182 100644
--- a/app/src/components/MeetingViews/Democratic.js
+++ b/app/src/components/MeetingViews/Democratic.js
@@ -126,7 +126,6 @@ class Democratic extends React.PureComponent
{
const {
advancedMode,
- activeSpeakerName,
amActiveSpeaker,
peers,
spotlights,
@@ -143,7 +142,7 @@ class Democratic extends React.PureComponent
return (
@@ -157,19 +156,12 @@ class Democratic extends React.PureComponent
if (spotlights.find((spotlightsElement) => spotlightsElement === peerName))
{
return (
-
+ advancedMode={advancedMode}
+ name={peerName}
+ style={style}
+ />
);
}
else