This commit is contained in:
Håvar Aambø Fosstveit
2020-05-19 15:16:24 +02:00
parent a691e82f3e
commit 209b545900
23 changed files with 113 additions and 113 deletions
+4 -4
View File
@@ -60,7 +60,7 @@ export default class Spotlights extends EventEmitter
const oldIndex = this._unmutablePeerList.indexOf(peerId);
let index = oldIndex;
index++;
for (let i = 0; i < this._unmutablePeerList.length; i++)
{
@@ -94,7 +94,7 @@ export default class Spotlights extends EventEmitter
const oldIndex = this._unmutablePeerList.indexOf(peerId);
let index = oldIndex;
index--;
for (let i = 0; i < this._unmutablePeerList.length; i++)
{
@@ -119,7 +119,7 @@ export default class Spotlights extends EventEmitter
logger.debug('setPeerSpotlight() [peerId:"%s"]', peerId);
const index = this._selectedSpotlights.indexOf(peerId);
if (index !== -1)
{
this._selectedSpotlights = [];
@@ -177,7 +177,7 @@ export default class Spotlights extends EventEmitter
{
logger.debug(
'room "newpeer" event [id: "%s"]', id);
if (this._peerList.indexOf(id) === -1) // We don't have this peer in the list
{
logger.debug('_handlePeer() | adding peer [peerId: "%s"]', id);
+1 -1
View File
@@ -9,7 +9,7 @@ export const addResponseMessage = (message) =>
type : 'ADD_NEW_RESPONSE_MESSAGE',
payload : { message }
});
export const addChatHistory = (chatHistory) =>
({
type : 'ADD_CHAT_HISTORY',
+2 -2
View File
@@ -80,13 +80,13 @@ export const setAudioOutputInProgress = (flag) =>
type : 'SET_AUDIO_OUTPUT_IN_PROGRESS',
payload : { flag }
});
export const setWebcamInProgress = (flag) =>
({
type : 'SET_WEBCAM_IN_PROGRESS',
payload : { flag }
});
export const setScreenShareInProgress = (flag) =>
({
type : 'SET_SCREEN_SHARE_IN_PROGRESS',
+2 -2
View File
@@ -26,13 +26,13 @@ export const setPeerVideoInProgress = (peerId, flag) =>
type : 'SET_PEER_VIDEO_IN_PROGRESS',
payload : { peerId, flag }
});
export const setPeerAudioInProgress = (peerId, flag) =>
({
type : 'SET_PEER_AUDIO_IN_PROGRESS',
payload : { peerId, flag }
});
export const setPeerScreenInProgress = (peerId, flag) =>
({
type : 'SET_PEER_SCREEN_IN_PROGRESS',
@@ -39,7 +39,7 @@ const ListLobbyPeer = (props) =>
const picture = peer.picture || EmptyAvatar;
return (
<ListItem
<ListItem
className={classnames(classes.root)}
key={peer.peerId}
button
@@ -77,7 +77,7 @@ const LockDialog = ({
/>
</DialogTitle>
{ lobbyPeers.length > 0 ?
<List
<List
dense
subheader={
<ListSubheader component='div'>
+18 -18
View File
@@ -286,9 +286,9 @@ const Me = (props) =>
defaultMessage : 'Start screen sharing'
});
}
const [
screenShareTooltipOpen,
screenShareTooltipSetOpen
const [
screenShareTooltipOpen,
screenShareTooltipSetOpen
] = React.useState(false);
const screenShareTooltipHandleClose = () =>
@@ -365,7 +365,7 @@ const Me = (props) =>
}}
style={spacingStyle}
>
{ me.browser.platform !== 'mobile' && smallContainer &&
<div className={classnames(
classes.ptt,
@@ -442,8 +442,8 @@ const Me = (props) =>
className={classes.smallContainer}
disabled={!me.canSendMic || me.audioInProgress}
color={
micState === 'on' ?
settings.voiceActivatedUnmute && !me.isAutoMuted ?
micState === 'on' ?
settings.voiceActivatedUnmute && !me.isAutoMuted ?
'primary'
: 'default'
: 'secondary'}
@@ -459,7 +459,7 @@ const Me = (props) =>
}}
>
{ micState === 'on' ?
<MicIcon
<MicIcon
color={me.isAutoMuted ? 'secondary' : 'primary'}
style={{ opacity: noiseVolume }}
/>
@@ -477,9 +477,9 @@ const Me = (props) =>
})}
className={classes.fab}
disabled={!me.canSendMic || me.audioInProgress}
color={micState === 'on' ?
color={micState === 'on' ?
settings.voiceActivatedUnmute && !me.isAutoMuted? 'primary'
: 'default'
: 'default'
: 'secondary'}
size='large'
onClick={() =>
@@ -561,9 +561,9 @@ const Me = (props) =>
}
</Tooltip>
{ me.browser.platform !== 'mobile' &&
<Tooltip open={screenShareTooltipOpen}
onClose={screenShareTooltipHandleClose}
onOpen={screenShareTooltipHandleOpen}
<Tooltip open={screenShareTooltipOpen}
onClose={screenShareTooltipHandleClose}
onOpen={screenShareTooltipHandleOpen}
title={screenTip} placement='left'
>
{ smallContainer ?
@@ -854,7 +854,7 @@ const Me = (props) =>
defaultMessage='ME'
/>
</p>
<VideoView
isMe
isScreen
@@ -898,15 +898,15 @@ const makeMapStateToProps = () =>
const mapStateToProps = (state) =>
{
let volume;
// noiseVolume under threshold
if (state.peerVolumes[state.me.id] < state.settings.noiseThreshold)
if (state.peerVolumes[state.me.id] < state.settings.noiseThreshold)
{
// noiseVolume mapped to range 0.5 ... 1 (threshold switch)
volume = 1 + ((Math.abs(state.peerVolumes[state.me.id] -
volume = 1 + ((Math.abs(state.peerVolumes[state.me.id] -
state.settings.noiseThreshold) / (-120 -
state.settings.noiseThreshold)));
}
}
// noiseVolume over threshold: no noise but voice
else { volume = 0; }
@@ -933,7 +933,7 @@ export default withRoomContext(connect(
return (
prev.room === next.room &&
prev.me === next.me &&
Math.round(prev.peerVolumes[prev.me.id]) ===
Math.round(prev.peerVolumes[prev.me.id]) ===
Math.round(next.peerVolumes[next.me.id]) &&
prev.peers === next.peers &&
prev.producers === next.producers &&
+13 -13
View File
@@ -228,14 +228,14 @@ const Peer = (props) =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
setHover(true);
}}
onTouchEnd={() =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
touchTimeout = setTimeout(() =>
{
setHover(false);
@@ -445,14 +445,14 @@ const Peer = (props) =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
setHover(true);
}}
onTouchEnd={() =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
touchTimeout = setTimeout(() =>
{
setHover(false);
@@ -471,7 +471,7 @@ const Peer = (props) =>
</p>
</div>
}
<div
className={classnames(classes.controls, hover ? 'hover' : null)}
onMouseOver={() => setHover(true)}
@@ -480,14 +480,14 @@ const Peer = (props) =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
setHover(true);
}}
onTouchEnd={() =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
touchTimeout = setTimeout(() =>
{
setHover(false);
@@ -544,7 +544,7 @@ const Peer = (props) =>
}
</Tooltip>
}
<Tooltip
title={intl.formatMessage({
id : 'label.fullscreen',
@@ -588,7 +588,7 @@ const Peer = (props) =>
}
</Tooltip>
</div>
<VideoView
showQuality
advancedMode={advancedMode}
@@ -629,14 +629,14 @@ const Peer = (props) =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
setHover(true);
}}
onTouchEnd={() =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
touchTimeout = setTimeout(() =>
{
setHover(false);
@@ -663,7 +663,7 @@ const Peer = (props) =>
{
if (touchTimeout)
clearTimeout(touchTimeout);
setHover(true);
}}
onTouchEnd={() =>
@@ -671,7 +671,7 @@ const Peer = (props) =>
if (touchTimeout)
clearTimeout(touchTimeout);
touchTimeout = setTimeout(() =>
{
setHover(false);
+7 -7
View File
@@ -69,16 +69,16 @@ const About = ({
/>
</DialogTitle>
<DialogContent dividers='true'>
<DialogContentText paragraph>
<DialogContentText paragraph>
Contributions to this work were made on behalf of the GÉANT
project, a project that has received funding from the
European Unions Horizon 2020 research and innovation
programme under Grant Agreement No. 731122 (GN4-2).
European Unions Horizon 2020 research and innovation
programme under Grant Agreement No. 731122 (GN4-2).
On behalf of GÉANT project, GÉANT Association is the sole
owner of the copyright in all material which was developed
owner of the copyright in all material which was developed
by a member of the GÉANT project.
</DialogContentText>
<DialogContentText paragraph>
<DialogContentText paragraph>
GÉANT Vereniging (Association) is registered with the
Chamber of Commerce in Amsterdam with registration number
40535155 and operates in the UK as a branch of GÉANT
@@ -106,7 +106,7 @@ const About = ({
/>
</Button>
</DialogActions>
</Dialog>
</Dialog>
);
};
@@ -114,7 +114,7 @@ About.propTypes =
{
roomClient : PropTypes.object.isRequired,
aboutOpen : PropTypes.bool.isRequired,
handleCloseAbout : PropTypes.func.isRequired,
handleCloseAbout : PropTypes.func.isRequired,
classes : PropTypes.object.isRequired
};
+5 -5
View File
@@ -107,13 +107,13 @@ const Help = ({
}
/>
</Tabs>
<DialogContent dividers='true'>
<DialogContent dividers='true'>
<DialogContentText>
{shortcuts.map((value, index) =>
{shortcuts.map((value, index) =>
{
return (
<div key={index} className={classes.shortcuts}>
<Paper className={classes.paper}>
<Paper className={classes.paper}>
{value.key}
</Paper>
<FormattedMessage
@@ -134,7 +134,7 @@ const Help = ({
/>
</Button>
</DialogActions>
</Dialog>
</Dialog>
);
};
@@ -142,7 +142,7 @@ Help.propTypes =
{
roomClient : PropTypes.object.isRequired,
helpOpen : PropTypes.bool.isRequired,
handleCloseHelp : PropTypes.func.isRequired,
handleCloseHelp : PropTypes.func.isRequired,
classes : PropTypes.object.isRequired
};
+1 -1
View File
@@ -327,7 +327,7 @@ const JoinDialog = ({
/>
</Button>
</DialogActions>
:
:
<DialogContent>
<DialogContentText
className={classes.green}
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { withStyles } from '@material-ui/core/styles';
import DOMPurify from 'dompurify';
import DOMPurify from 'dompurify';
import marked from 'marked';
import Paper from '@material-ui/core/Paper';
import Typography from '@material-ui/core/Typography';
@@ -14,7 +14,7 @@ linkRenderer.link = (href, title, text) =>
{
title = title ? title : href;
text = text ? text : href;
return `<a target='_blank' href='${ href }' title='${ title }'>${ text }</a>`;
};
@@ -60,7 +60,7 @@ class MessageList extends React.Component
myPicture,
classes
} = this.props;
return (
<div className={classes.root} ref={(node) => { this.node = node; }}>
{
@@ -279,7 +279,7 @@ const ListPeer = (props) =>
</IconButton>
</Tooltip>
}
{ isModerator && webcamConsumer &&
{ isModerator && webcamConsumer &&
<Tooltip
title={intl.formatMessage({
id : 'tooltip.muteParticipantVideoModerator',
+4 -4
View File
@@ -143,13 +143,13 @@ class Filmstrip extends React.PureComponent
let speakerWidth = (availableWidth - PADDING_H);
let speakerHeight = speakerWidth / RATIO;
if (this.isSharingCamera(this.getActivePeerId()))
{
speakerWidth /= 2;
speakerHeight = speakerWidth / RATIO;
}
if (speakerHeight > (availableSpeakerHeight - PADDING_V))
{
speakerHeight = (availableSpeakerHeight - PADDING_V);
@@ -167,7 +167,7 @@ class Filmstrip extends React.PureComponent
let filmStripHeight = availableFilmstripHeight - FILMSTRING_PADDING_V;
let filmStripWidth = filmStripHeight * RATIO;
if (
(filmStripWidth * this.props.boxes) >
(availableWidth - FILMSTRING_PADDING_H)
@@ -254,7 +254,7 @@ class Filmstrip extends React.PureComponent
};
return (
<div
<div
className={classnames(
classes.root,
toolbarsVisible || permanentTopBar ?
+2 -2
View File
@@ -36,7 +36,7 @@ export default class PeerAudio extends React.PureComponent
if (prevProps !== this.props)
{
const { audioTrack, audioOutputDevice } = this.props;
this._setTrack(audioTrack);
this._setOutputDevice(audioOutputDevice);
}
@@ -70,7 +70,7 @@ export default class PeerAudio extends React.PureComponent
{
if (this._audioOutputDevice === audioOutputDevice)
return;
this._audioOutputDevice = audioOutputDevice;
const { audio } = this.refs;
+2 -2
View File
@@ -248,7 +248,7 @@ export const makePermissionSelector = (permission) =>
const permitted = roles.some((role) =>
roomPermissions[permission].includes(role)
);
if (permitted)
return true;
@@ -265,7 +265,7 @@ export const makePermissionSelector = (permission) =>
).length === 0
)
return true;
return false;
}
);
+14 -14
View File
@@ -18,7 +18,7 @@ import Typography from '@material-ui/core/Typography';
const NoiseSlider = withStyles(
{
root :
root :
{
color : '#3880ff',
height : 2,
@@ -48,7 +48,7 @@ const styles = (theme) => ({
{
padding : theme.spacing(2)
},
margin :
margin :
{
height : theme.spacing(3)
},
@@ -72,7 +72,7 @@ const MediaSettings = ({
}) =>
{
const intl = useIntl();
const resolutions = [ {
value : 'low',
label : intl.formatMessage({
@@ -122,7 +122,7 @@ const MediaSettings = ({
audioDevices = Object.values(me.audioDevices);
else
audioDevices = [];
let audioOutputDevices;
if (me.audioOutputDevices)
@@ -174,7 +174,7 @@ const MediaSettings = ({
<FormControl className={classes.formControl}>
<Select
value={settings.resolution || ''}
onChange={(event) =>
onChange={(event) =>
{
if (event.target.value)
roomClient.changeVideoResolution(event.target.value);
@@ -183,7 +183,7 @@ const MediaSettings = ({
autoWidth
className={classes.selectEmpty}
>
{resolutions.map((resolution, index) =>
{resolutions.map((resolution, index) =>
{
return (
<MenuItem key={index} value={resolution.value}>
@@ -293,7 +293,7 @@ const MediaSettings = ({
className={classes.setting}
control={
<Checkbox checked={settings.showAdvancedAudio} onChange={
(event) =>
(event) =>
{
setShowAdvancedAudio(event.target.checked);
}}
@@ -310,7 +310,7 @@ const MediaSettings = ({
className={classes.setting}
control={
<Checkbox checked={settings.echoCancellation} onChange={
(event) =>
(event) =>
{
setEchoCancellation(event.target.checked);
roomClient.changeAudioDevice(settings.selectedAudioDevice);
@@ -325,7 +325,7 @@ const MediaSettings = ({
className={classes.setting}
control={
<Checkbox checked={settings.autoGainControl} onChange={
(event) =>
(event) =>
{
setAutoGainControl(event.target.checked);
roomClient.changeAudioDevice(settings.selectedAudioDevice);
@@ -340,7 +340,7 @@ const MediaSettings = ({
className={classes.setting}
control={
<Checkbox checked={settings.noiseSuppression} onChange={
(event) =>
(event) =>
{
setNoiseSuppression(event.target.checked);
roomClient.changeAudioDevice(settings.selectedAudioDevice);
@@ -355,7 +355,7 @@ const MediaSettings = ({
className={classes.setting}
control={
<Checkbox checked={settings.voiceActivatedUnmute} onChange={
(event) =>
(event) =>
{
setVoiceActivatedUnmute(event.target.checked);
}}
@@ -374,18 +374,18 @@ const MediaSettings = ({
})
}
</Typography>
<NoiseSlider className={classnames(classes.slider, classnames.setting)}
<NoiseSlider className={classnames(classes.slider, classnames.setting)}
key={'noise-threshold-slider'}
min={-100}
value={settings.noiseThreshold}
max={0}
max={0}
valueLabelDisplay={'off'}
onChange={
(event, value) =>
{
roomClient._setNoiseThreshold(value);
}}
marks={[ { value: volume, label: 'level' } ]}
marks={[ { value: volume, label: 'level' } ]}
/>
<div className={classes.margin} />
</form>
+12 -12
View File
@@ -187,50 +187,50 @@ class VideoView extends React.PureComponent
if (videoScore || audioScore)
{
const score = videoScore ? videoScore : audioScore;
switch (isMe ? score.score : score.producerScore)
{
case 0:
case 1:
{
quality = <SignalCellular0BarIcon style={{ color: red[500] }}/>;
break;
}
case 2:
case 3:
{
quality = <SignalCellular1BarIcon style={{ color: red[500] }}/>;
break;
}
case 4:
case 5:
case 6:
{
quality = <SignalCellular2BarIcon style={{ color: orange[500] }}/>;
break;
}
case 7:
case 8:
case 9:
{
quality = <SignalCellular3BarIcon style={{ color: yellow[500] }}/>;
break;
}
case 10:
{
quality = null;
break;
}
default:
{
break;
@@ -266,7 +266,7 @@ class VideoView extends React.PureComponent
</div>
{ showQuality &&
<div className={classnames(classes.box, 'right')}>
{
{
quality
}
</div>
+10 -10
View File
@@ -135,20 +135,20 @@ function run()
if (!basePath)
basePath = '/';
// Get current device.
const device = deviceInfo();
let unsupportedBrowser=false;
let webrtcUnavailable=false;
if (detectDevice() === undefined)
{
logger.error('Unsupported browser detected by mediasoup client detectDevice! deviceInfo: %o', device);
logger.error('Unsupported browser detected by mediasoup client detectDevice! deviceInfo: %o', device);
unsupportedBrowser=true;
}
else
else
if (
navigator.mediaDevices === undefined ||
navigator.mediaDevices.getUserMedia === undefined ||
@@ -157,13 +157,13 @@ function run()
{
logger.error('WebRTC is unavialable in your browser! deviceInfo: %o', device);
webrtcUnavailable=true;
}
else
}
else
if (device.name === 'safari' && !isNaN(device.version) && parseFloat(device.version) < 12)
{
unsupportedBrowser=true;
}
else
else
{
logger.debug('Supported Browser! deviceInfo: %o', device);
}
@@ -173,15 +173,15 @@ function run()
render(
<MuiThemeProvider theme={theme}>
<RawIntlProvider value={intl}>
<UnsupportedBrowser
webrtcUnavailable={webrtcUnavailable}
<UnsupportedBrowser
webrtcUnavailable={webrtcUnavailable}
platform={device.platform}
/>
</RawIntlProvider>
</MuiThemeProvider>,
document.getElementById('multiparty-meeting')
);
return;
}
+2 -2
View File
@@ -1,6 +1,6 @@
const lobbyPeer = (state = {}, action) =>
{
switch (action.type)
switch (action.type)
{
case 'ADD_LOBBY_PEER':
return { id: action.payload.peerId };
@@ -42,7 +42,7 @@ const lobbyPeers = (state = {}, action) =>
{
const oldLobbyPeer = state[action.payload.peerId];
if (!oldLobbyPeer)
if (!oldLobbyPeer)
{
// Tried to update non-existent lobbyPeer. Has probably been promoted, or left.
return state;
+5 -5
View File
@@ -2,7 +2,7 @@ const initialState = {};
const peer = (state = initialState, action) =>
{
switch (action.type)
switch (action.type)
{
case 'ADD_PEER':
return action.payload.peer;
@@ -21,7 +21,7 @@ const peer = (state = initialState, action) =>
case 'SET_PEER_KICK_IN_PROGRESS':
return { ...state, peerKickInProgress: action.payload.flag };
case 'SET_PEER_RAISED_HAND':
return {
...state,
@@ -34,7 +34,7 @@ const peer = (state = initialState, action) =>
...state,
raisedHandInProgress : action.payload.flag
};
case 'ADD_CONSUMER':
{
const consumers = [ ...state.consumers, action.payload.consumer.id ];
@@ -127,14 +127,14 @@ const peers = (state = initialState, action) =>
{
const oldPeer = state[action.payload.peerId];
if (!oldPeer)
if (!oldPeer)
{
throw new Error('no Peer found');
}
return { ...state, [oldPeer.id]: peer(oldPeer, action) };
}
case 'SET_PEER_KICK_IN_PROGRESS':
case 'REMOVE_CONSUMER':
{
+3 -3
View File
@@ -10,7 +10,7 @@ const initialState =
// access code to the room if locked and joinByAccessCode == true
accessCode : '',
// if true: accessCode is a possibility to open the room
joinByAccessCode : true,
joinByAccessCode : true,
activeSpeakerId : null,
torrentSupport : false,
showSettings : false,
@@ -107,7 +107,7 @@ const room = (state = initialState, action) =>
return { ...state, lockDialogOpen };
}
case 'SET_SETTINGS_OPEN':
{
const { settingsOpen } = action.payload;
@@ -135,7 +135,7 @@ const room = (state = initialState, action) =>
return { ...state, aboutOpen };
}
case 'SET_SETTINGS_TAB':
{
const { tab } = action.payload;