A button to promote all peers from lobby, fixes #287
parent
a00d33ee4b
commit
a1ed79c5db
|
|
@ -1274,6 +1274,26 @@ export default class RoomClient
|
||||||
roomActions.setSelectedPeer(peerId));
|
roomActions.setSelectedPeer(peerId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async promoteAllLobbyPeers()
|
||||||
|
{
|
||||||
|
logger.debug('promoteAllLobbyPeers()');
|
||||||
|
|
||||||
|
store.dispatch(
|
||||||
|
roomActions.setLobbyPeersPromotionInProgress(true));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await this.sendRequest('promoteAllPeers');
|
||||||
|
}
|
||||||
|
catch (error)
|
||||||
|
{
|
||||||
|
logger.error('promoteAllLobbyPeers() [error:"%o"]', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
store.dispatch(
|
||||||
|
roomActions.setLobbyPeersPromotionInProgress(false));
|
||||||
|
}
|
||||||
|
|
||||||
async promoteLobbyPeer(peerId)
|
async promoteLobbyPeer(peerId)
|
||||||
{
|
{
|
||||||
logger.debug('promoteLobbyPeer() [peerId:"%s"]', peerId);
|
logger.debug('promoteLobbyPeer() [peerId:"%s"]', peerId);
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,12 @@ export const toggleConsumerFullscreen = (consumerId) =>
|
||||||
payload : { consumerId }
|
payload : { consumerId }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const setLobbyPeersPromotionInProgress = (flag) =>
|
||||||
|
({
|
||||||
|
type : 'SET_LOBBY_PEERS_PROMOTION_IN_PROGRESS',
|
||||||
|
payload : { flag }
|
||||||
|
});
|
||||||
|
|
||||||
export const setMuteAllInProgress = (flag) =>
|
export const setMuteAllInProgress = (flag) =>
|
||||||
({
|
({
|
||||||
type : 'MUTE_ALL_IN_PROGRESS',
|
type : 'MUTE_ALL_IN_PROGRESS',
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ const ListLobbyPeer = (props) =>
|
||||||
const {
|
const {
|
||||||
roomClient,
|
roomClient,
|
||||||
peer,
|
peer,
|
||||||
|
promotionInProgress,
|
||||||
canPromote,
|
canPromote,
|
||||||
classes
|
classes
|
||||||
} = props;
|
} = props;
|
||||||
|
|
@ -55,7 +56,11 @@ const ListLobbyPeer = (props) =>
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<IconButton
|
<IconButton
|
||||||
disabled={!canPromote || peer.promotionInProgress}
|
disabled={
|
||||||
|
!canPromote ||
|
||||||
|
peer.promotionInProgress ||
|
||||||
|
promotionInProgress
|
||||||
|
}
|
||||||
onClick={(e) =>
|
onClick={(e) =>
|
||||||
{
|
{
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
@ -74,6 +79,7 @@ ListLobbyPeer.propTypes =
|
||||||
roomClient : PropTypes.any.isRequired,
|
roomClient : PropTypes.any.isRequired,
|
||||||
advancedMode : PropTypes.bool,
|
advancedMode : PropTypes.bool,
|
||||||
peer : PropTypes.object.isRequired,
|
peer : PropTypes.object.isRequired,
|
||||||
|
promotionInProgress : PropTypes.bool.isRequired,
|
||||||
canPromote : PropTypes.bool.isRequired,
|
canPromote : PropTypes.bool.isRequired,
|
||||||
classes : PropTypes.object.isRequired
|
classes : PropTypes.object.isRequired
|
||||||
};
|
};
|
||||||
|
|
@ -82,6 +88,7 @@ const mapStateToProps = (state, { id }) =>
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
peer : state.lobbyPeers[id],
|
peer : state.lobbyPeers[id],
|
||||||
|
promotionInProgress : state.room.lobbyPeersPromotionInProgress,
|
||||||
canPromote :
|
canPromote :
|
||||||
state.me.roles.some((role) =>
|
state.me.roles.some((role) =>
|
||||||
state.room.permissionsFromRoles.PROMOTE_PEER.includes(role))
|
state.room.permissionsFromRoles.PROMOTE_PEER.includes(role))
|
||||||
|
|
@ -97,6 +104,8 @@ export default withRoomContext(connect(
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
prev.room.permissionsFromRoles === next.room.permissionsFromRoles &&
|
prev.room.permissionsFromRoles === next.room.permissionsFromRoles &&
|
||||||
|
prev.room.lobbyPeersPromotionInProgress ===
|
||||||
|
next.room.lobbyPeersPromotionInProgress &&
|
||||||
prev.me.roles === next.me.roles &&
|
prev.me.roles === next.me.roles &&
|
||||||
prev.lobbyPeers === next.lobbyPeers
|
prev.lobbyPeers === next.lobbyPeers
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -51,9 +51,11 @@ const styles = (theme) =>
|
||||||
});
|
});
|
||||||
|
|
||||||
const LockDialog = ({
|
const LockDialog = ({
|
||||||
|
roomClient,
|
||||||
room,
|
room,
|
||||||
handleCloseLockDialog,
|
handleCloseLockDialog,
|
||||||
lobbyPeers,
|
lobbyPeers,
|
||||||
|
canPromote,
|
||||||
classes
|
classes
|
||||||
}) =>
|
}) =>
|
||||||
{
|
{
|
||||||
|
|
@ -102,6 +104,20 @@ const LockDialog = ({
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
}
|
}
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
|
<Button
|
||||||
|
disabled={
|
||||||
|
lobbyPeers.length === 0 ||
|
||||||
|
!canPromote ||
|
||||||
|
room.lobbyPeersPromotionInProgress
|
||||||
|
}
|
||||||
|
onClick={() => roomClient.promoteAllLobbyPeers()}
|
||||||
|
color='primary'
|
||||||
|
>
|
||||||
|
<FormattedMessage
|
||||||
|
id='label.promoteAllPeers'
|
||||||
|
defaultMessage='Promote all'
|
||||||
|
/>
|
||||||
|
</Button>
|
||||||
<Button onClick={() => handleCloseLockDialog(false)} color='primary'>
|
<Button onClick={() => handleCloseLockDialog(false)} color='primary'>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='label.close'
|
id='label.close'
|
||||||
|
|
@ -115,10 +131,12 @@ const LockDialog = ({
|
||||||
|
|
||||||
LockDialog.propTypes =
|
LockDialog.propTypes =
|
||||||
{
|
{
|
||||||
|
roomClient : PropTypes.object.isRequired,
|
||||||
room : appPropTypes.Room.isRequired,
|
room : appPropTypes.Room.isRequired,
|
||||||
handleCloseLockDialog : PropTypes.func.isRequired,
|
handleCloseLockDialog : PropTypes.func.isRequired,
|
||||||
handleAccessCode : PropTypes.func.isRequired,
|
handleAccessCode : PropTypes.func.isRequired,
|
||||||
lobbyPeers : PropTypes.array,
|
lobbyPeers : PropTypes.array,
|
||||||
|
canPromote : PropTypes.bool,
|
||||||
classes : PropTypes.object.isRequired
|
classes : PropTypes.object.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -126,7 +144,10 @@ const mapStateToProps = (state) =>
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
room : state.room,
|
room : state.room,
|
||||||
lobbyPeers : lobbyPeersKeySelector(state)
|
lobbyPeers : lobbyPeersKeySelector(state),
|
||||||
|
canPromote :
|
||||||
|
state.me.roles.some((role) =>
|
||||||
|
state.room.permissionsFromRoles.PROMOTE_PEER.includes(role))
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -144,6 +165,7 @@ export default withRoomContext(connect(
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
prev.room === next.room &&
|
prev.room === next.room &&
|
||||||
|
prev.me.roles === next.me.roles &&
|
||||||
prev.lobbyPeers === next.lobbyPeers
|
prev.lobbyPeers === next.lobbyPeers
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ const initialState =
|
||||||
lockDialogOpen : false,
|
lockDialogOpen : false,
|
||||||
joined : false,
|
joined : false,
|
||||||
muteAllInProgress : false,
|
muteAllInProgress : false,
|
||||||
|
lobbyPeersPromotionInProgress : false,
|
||||||
stopAllVideoInProgress : false,
|
stopAllVideoInProgress : false,
|
||||||
closeMeetingInProgress : false,
|
closeMeetingInProgress : false,
|
||||||
clearChatInProgress : false,
|
clearChatInProgress : false,
|
||||||
|
|
@ -199,6 +200,9 @@ const room = (state = initialState, action) =>
|
||||||
return { ...state, spotlights };
|
return { ...state, spotlights };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'SET_LOBBY_PEERS_PROMOTION_IN_PROGRESS':
|
||||||
|
return { ...state, lobbyPeersPromotionInProgress: action.payload.flag };
|
||||||
|
|
||||||
case 'MUTE_ALL_IN_PROGRESS':
|
case 'MUTE_ALL_IN_PROGRESS':
|
||||||
return { ...state, muteAllInProgress: action.payload.flag };
|
return { ...state, muteAllInProgress: action.payload.flag };
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "设置",
|
"settings.settings": "设置",
|
||||||
"settings.camera": "视频设备",
|
"settings.camera": "视频设备",
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Nastavení",
|
"settings.settings": "Nastavení",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Einstellungen",
|
"settings.settings": "Einstellungen",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Indstillinger",
|
"settings.settings": "Indstillinger",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Ρυθμίσεις",
|
"settings.settings": "Ρυθμίσεις",
|
||||||
"settings.camera": "Κάμερα",
|
"settings.camera": "Κάμερα",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": "Appearence",
|
"label.appearence": "Appearence",
|
||||||
"label.advanced": "Advanced",
|
"label.advanced": "Advanced",
|
||||||
"label.addVideo": "Add video",
|
"label.addVideo": "Add video",
|
||||||
|
"label.promoteAllPeers": "Promote all",
|
||||||
|
|
||||||
"settings.settings": "Settings",
|
"settings.settings": "Settings",
|
||||||
"settings.camera": "Camera",
|
"settings.camera": "Camera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Ajustes",
|
"settings.settings": "Ajustes",
|
||||||
"settings.camera": "Cámara",
|
"settings.camera": "Cámara",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Paramètres",
|
"settings.settings": "Paramètres",
|
||||||
"settings.camera": "Caméra",
|
"settings.camera": "Caméra",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Postavke",
|
"settings.settings": "Postavke",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Beállítások",
|
"settings.settings": "Beállítások",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Impostazioni",
|
"settings.settings": "Impostazioni",
|
||||||
"settings.camera": "Videocamera",
|
"settings.camera": "Videocamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": "Utseende",
|
"label.appearence": "Utseende",
|
||||||
"label.advanced": "Avansert",
|
"label.advanced": "Avansert",
|
||||||
"label.addVideo": "Legg til video",
|
"label.addVideo": "Legg til video",
|
||||||
|
"label.promoteAllPeers": "Slipp inn alle",
|
||||||
|
|
||||||
"settings.settings": "Innstillinger",
|
"settings.settings": "Innstillinger",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Ustawienia",
|
"settings.settings": "Ustawienia",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Definições",
|
"settings.settings": "Definições",
|
||||||
"settings.camera": "Camera",
|
"settings.camera": "Camera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Setări",
|
"settings.settings": "Setări",
|
||||||
"settings.camera": "Cameră video",
|
"settings.camera": "Cameră video",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Ayarlar",
|
"settings.settings": "Ayarlar",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@
|
||||||
"label.appearence": null,
|
"label.appearence": null,
|
||||||
"label.advanced": null,
|
"label.advanced": null,
|
||||||
"label.addVideo": null,
|
"label.addVideo": null,
|
||||||
|
"label.promoteAllPeers": null,
|
||||||
|
|
||||||
"settings.settings": "Налаштування",
|
"settings.settings": "Налаштування",
|
||||||
"settings.camera": "Камера",
|
"settings.camera": "Камера",
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,8 @@ class Lobby extends EventEmitter
|
||||||
|
|
||||||
for (const peer in this._peers)
|
for (const peer in this._peers)
|
||||||
{
|
{
|
||||||
if (peer.socket)
|
if (!this._peers[peer].closed)
|
||||||
this.promotePeer(peer.id);
|
this.promotePeer(peer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue