commit
a4272149f8
|
|
@ -52,26 +52,36 @@ var config =
|
||||||
noiseSuppression : true,
|
noiseSuppression : true,
|
||||||
sampleSize : 16
|
sampleSize : 16
|
||||||
},
|
},
|
||||||
background : 'images/background.jpg',
|
|
||||||
defaultLayout : 'democratic', // democratic, filmstrip
|
/**
|
||||||
|
* Set the auto mute / Push To Talk threshold
|
||||||
|
* default value is 4
|
||||||
|
*
|
||||||
|
* Set it to 0 to disable auto mute functionality,
|
||||||
|
* but use it with caution
|
||||||
|
* full mesh audio strongly decrease room capacity!
|
||||||
|
*/
|
||||||
|
autoMuteThreshold : 4,
|
||||||
|
background : 'images/background.jpg',
|
||||||
|
defaultLayout : 'democratic', // democratic, filmstrip
|
||||||
// If true, will show media control buttons in separate
|
// If true, will show media control buttons in separate
|
||||||
// control bar, not in the ME container.
|
// control bar, not in the ME container.
|
||||||
buttonControlBar : false,
|
buttonControlBar : false,
|
||||||
// If false, will push videos away to make room for side
|
// If false, will push videos away to make room for side
|
||||||
// drawer. If true, will overlay side drawer over videos
|
// drawer. If true, will overlay side drawer over videos
|
||||||
drawerOverlayed : true,
|
drawerOverlayed : true,
|
||||||
// Timeout for autohiding topbar and button control bar
|
// Timeout for autohiding topbar and button control bar
|
||||||
hideTimeout : 3000,
|
hideTimeout : 3000,
|
||||||
lastN : 4,
|
lastN : 4,
|
||||||
mobileLastN : 1,
|
mobileLastN : 1,
|
||||||
// Highest number of speakers user can select
|
// Highest number of speakers user can select
|
||||||
maxLastN : 5,
|
maxLastN : 5,
|
||||||
// If truthy, users can NOT change number of speakers visible
|
// If truthy, users can NOT change number of speakers visible
|
||||||
lockLastN : false,
|
lockLastN : false,
|
||||||
// Add file and uncomment for adding logo to appbar
|
// Add file and uncomment for adding logo to appbar
|
||||||
// logo : 'images/logo.svg',
|
// logo : 'images/logo.svg',
|
||||||
title : 'Multiparty meeting',
|
title : 'Multiparty meeting',
|
||||||
theme :
|
theme :
|
||||||
{
|
{
|
||||||
palette :
|
palette :
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -304,12 +304,18 @@ export default class RoomClient
|
||||||
{
|
{
|
||||||
case String.fromCharCode(37):
|
case String.fromCharCode(37):
|
||||||
{
|
{
|
||||||
this._spotlights.setPrevAsSelected();
|
const newPeerId = this._spotlights.getPrevAsSelected(
|
||||||
|
store.getState().room.selectedPeerId);
|
||||||
|
|
||||||
|
if (newPeerId) this.setSelectedPeer(newPeerId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case String.fromCharCode(39):
|
case String.fromCharCode(39):
|
||||||
{
|
{
|
||||||
this._spotlights.setNextAsSelected();
|
const newPeerId = this._spotlights.getNextAsSelected(
|
||||||
|
store.getState().room.selectedPeerId);
|
||||||
|
|
||||||
|
if (newPeerId) this.setSelectedPeer(newPeerId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'A': // Activate advanced mode
|
case 'A': // Activate advanced mode
|
||||||
|
|
@ -2970,7 +2976,9 @@ export default class RoomClient
|
||||||
if (!this._muted)
|
if (!this._muted)
|
||||||
{
|
{
|
||||||
await this.enableMic();
|
await this.enableMic();
|
||||||
if (peers.length > 4)
|
const { autoMuteThreshold } = store.getState().settings;
|
||||||
|
|
||||||
|
if (autoMuteThreshold && peers.length > autoMuteThreshold)
|
||||||
this.muteMic();
|
this.muteMic();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3616,6 +3624,8 @@ export default class RoomClient
|
||||||
|
|
||||||
this._screenSharingProducer = null;
|
this._screenSharingProducer = null;
|
||||||
|
|
||||||
|
this._screenSharing.stop();
|
||||||
|
|
||||||
store.dispatch(meActions.setScreenShareInProgress(false));
|
store.dispatch(meActions.setScreenShareInProgress(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,88 +46,72 @@ export default class Spotlights extends EventEmitter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setNextAsSelected()
|
getNextAsSelected(peerId)
|
||||||
{
|
{
|
||||||
let peerId = null;
|
let newSelectedPeer = null;
|
||||||
|
|
||||||
if (this._selectedSpotlights.length > 0)
|
if (peerId == null && this._unmutablePeerList.length > 0)
|
||||||
{
|
|
||||||
peerId = this._selectedSpotlights[0];
|
|
||||||
}
|
|
||||||
else if (this._unmutablePeerList.length > 0)
|
|
||||||
{
|
{
|
||||||
peerId = this._unmutablePeerList[0];
|
peerId = this._unmutablePeerList[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peerId != null && this._currentSpotlights.length < this._unmutablePeerList.length)
|
if (peerId != null && this._currentSpotlights.length < this._unmutablePeerList.length)
|
||||||
{
|
{
|
||||||
const oldIndex = this._unmutablePeerList.indexOf(peerId);
|
const oldIndex = this._unmutablePeerList.indexOf(peerId);
|
||||||
|
|
||||||
let index = oldIndex;
|
let index = oldIndex;
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
do
|
for (let i = 0; i < this._unmutablePeerList.length; i++)
|
||||||
{
|
{
|
||||||
if (index >= this._unmutablePeerList.length)
|
if (index >= this._unmutablePeerList.length)
|
||||||
{
|
{
|
||||||
index = 0;
|
index = 0;
|
||||||
}
|
}
|
||||||
const newSelectedPeer = this._unmutablePeerList[index];
|
newSelectedPeer = this._unmutablePeerList[index];
|
||||||
|
if (!this._currentSpotlights.includes(newSelectedPeer))
|
||||||
if (!this._currentSpotlights.includes(newSelectedPeer))
|
|
||||||
{
|
{
|
||||||
this.setPeerSpotlight(newSelectedPeer);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
index++;
|
index++;
|
||||||
if (index === oldIndex)
|
}
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return newSelectedPeer;
|
||||||
}
|
}
|
||||||
|
|
||||||
setPrevAsSelected()
|
getPrevAsSelected(peerId)
|
||||||
{
|
{
|
||||||
let peerId = null;
|
let newSelectedPeer = null;
|
||||||
|
|
||||||
if (this._selectedSpotlights.length > 0)
|
if (peerId == null && this._unmutablePeerList.length > 0)
|
||||||
{
|
|
||||||
peerId = this._selectedSpotlights[0];
|
|
||||||
}
|
|
||||||
else if (this._unmutablePeerList.length > 0)
|
|
||||||
{
|
{
|
||||||
peerId = this._unmutablePeerList[0];
|
peerId = this._unmutablePeerList[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peerId != null && this._currentSpotlights.length < this._unmutablePeerList.length)
|
if (peerId != null && this._currentSpotlights.length < this._unmutablePeerList.length)
|
||||||
{
|
{
|
||||||
const oldIndex = this._unmutablePeerList.indexOf(peerId);
|
const oldIndex = this._unmutablePeerList.indexOf(peerId);
|
||||||
|
|
||||||
let index = oldIndex;
|
let index = oldIndex;
|
||||||
|
|
||||||
index--;
|
index--;
|
||||||
do
|
for (let i = 0; i < this._unmutablePeerList.length; i++)
|
||||||
{
|
{
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
{
|
{
|
||||||
index = this._unmutablePeerList.length - 1;
|
index = this._unmutablePeerList.length - 1;
|
||||||
}
|
}
|
||||||
const newSelectedPeer = this._unmutablePeerList[index];
|
newSelectedPeer = this._unmutablePeerList[index];
|
||||||
|
if (!this._currentSpotlights.includes(newSelectedPeer))
|
||||||
if (!this._currentSpotlights.includes(newSelectedPeer))
|
|
||||||
{
|
{
|
||||||
this.setPeerSpotlight(newSelectedPeer);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
index--;
|
index--;
|
||||||
if (index === oldIndex)
|
}
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return newSelectedPeer;
|
||||||
}
|
}
|
||||||
|
|
||||||
setPeerSpotlight(peerId)
|
setPeerSpotlight(peerId)
|
||||||
|
|
|
||||||
|
|
@ -284,6 +284,25 @@ const Me = (props) =>
|
||||||
defaultMessage : 'Start screen sharing'
|
defaultMessage : 'Start screen sharing'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
const [
|
||||||
|
screenShareTooltipOpen,
|
||||||
|
screenShareTooltipSetOpen
|
||||||
|
] = React.useState(false);
|
||||||
|
|
||||||
|
const screenShareTooltipHandleClose = () =>
|
||||||
|
{
|
||||||
|
screenShareTooltipSetOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const screenShareTooltipHandleOpen = () =>
|
||||||
|
{
|
||||||
|
screenShareTooltipSetOpen(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (screenState === 'off' && me.screenShareInProgress && screenShareTooltipOpen)
|
||||||
|
{
|
||||||
|
screenShareTooltipHandleClose();
|
||||||
|
}
|
||||||
|
|
||||||
const spacingStyle =
|
const spacingStyle =
|
||||||
{
|
{
|
||||||
|
|
@ -511,7 +530,11 @@ const Me = (props) =>
|
||||||
}
|
}
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
{ me.browser.platform !== 'mobile' &&
|
{ me.browser.platform !== 'mobile' &&
|
||||||
<Tooltip title={screenTip} placement='left'>
|
<Tooltip open={screenShareTooltipOpen}
|
||||||
|
onClose={screenShareTooltipHandleClose}
|
||||||
|
onOpen={screenShareTooltipHandleOpen}
|
||||||
|
title={screenTip} placement='left'
|
||||||
|
>
|
||||||
{ smallContainer ?
|
{ smallContainer ?
|
||||||
<div>
|
<div>
|
||||||
<IconButton
|
<IconButton
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ const initialState =
|
||||||
notificationSounds : true,
|
notificationSounds : true,
|
||||||
buttonControlBar : window.config.buttonControlBar || false,
|
buttonControlBar : window.config.buttonControlBar || false,
|
||||||
drawerOverlayed : window.config.drawerOverlayed || true,
|
drawerOverlayed : window.config.drawerOverlayed || true,
|
||||||
|
autoMuteThreshold : window.config.autoMuteThreshold || 4,
|
||||||
...window.config.defaultAudio
|
...window.config.defaultAudio
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue