Merge branch 'moderator-tools' into develop

auto_join_3.3
Mészáros Mihály 2020-05-18 13:45:08 +02:00
commit 0a860068b2
27 changed files with 214 additions and 26 deletions

View File

@ -1448,6 +1448,26 @@ export default class RoomClient
peerActions.setStopPeerVideoInProgress(peerId, false));
}
async stopPeerScreenSharing(peerId)
{
logger.debug('stopPeerScreenSharing() [peerId:"%s"]', peerId);
store.dispatch(
peerActions.setStopPeerScreenSharingInProgress(peerId, true));
try
{
await this.sendRequest('moderator:stopScreenSharing', { peerId });
}
catch (error)
{
logger.error('stopPeerScreenSharing() failed: %o', error);
}
store.dispatch(
peerActions.setStopPeerScreenSharingInProgress(peerId, false));
}
async muteAllPeers()
{
logger.debug('muteAllPeers()');
@ -1488,6 +1508,26 @@ export default class RoomClient
roomActions.setStopAllVideoInProgress(false));
}
async stopAllPeerScreenSharing()
{
logger.debug('stopAllPeerScreenSharing()');
store.dispatch(
roomActions.setStopAllScreenSharingInProgress(true));
try
{
await this.sendRequest('moderator:stopAllScreenSharing');
}
catch (error)
{
logger.error('stopAllPeerScreenSharing() failed: %o', error);
}
store.dispatch(
roomActions.setStopAllScreenSharingInProgress(false));
}
async closeMeeting()
{
logger.debug('closeMeeting()');
@ -2608,7 +2648,6 @@ export default class RoomClient
case 'moderator:stopVideo':
{
this.disableWebcam();
this.disableScreenSharing();
store.dispatch(requestActions.notify(
{
@ -2621,6 +2660,21 @@ export default class RoomClient
break;
}
case 'moderator:stopScreenSharing':
{
this.disableScreenSharing();
store.dispatch(requestActions.notify(
{
text : intl.formatMessage({
id : 'moderator.muteScreenSharingModerator',
defaultMessage : 'Moderator stopped your screen sharing'
})
}));
break;
}
case 'moderator:kick':
{
// Need some feedback

View File

@ -86,3 +86,9 @@ export const setStopPeerVideoInProgress = (peerId, flag) =>
type : 'STOP_PEER_VIDEO_IN_PROGRESS',
payload : { peerId, flag }
});
export const setStopPeerScreenSharingInProgress = (peerId, flag) =>
({
type : 'STOP_PEER_SCREEN_SHARING_IN_PROGRESS',
payload : { peerId, flag }
});

View File

@ -164,6 +164,12 @@ export const setStopAllVideoInProgress = (flag) =>
payload : { flag }
});
export const setStopAllScreenSharingInProgress = (flag) =>
({
type : 'STOP_ALL_SCREEN_SHARING_IN_PROGRESS',
payload : { flag }
});
export const setCloseMeetingInProgress = (flag) =>
({
type : 'CLOSE_MEETING_IN_PROGRESS',

View File

@ -63,6 +63,22 @@ const ListModerator = (props) =>
/>
</Button>
<div className={classes.divider} />
<Button
aria-label={intl.formatMessage({
id : 'room.stopAllScreenSharing',
defaultMessage : 'Stop all screen sharing'
})}
variant='contained'
color='secondary'
disabled={room.stopAllScreenSharingInProgress}
onClick={() => roomClient.stopAllPeerScreenSharing()}
>
<FormattedMessage
id='room.stopAllScreenSharing'
defaultMessage='Stop all screen sharing'
/>
</Button>
<div className={classes.divider} />
<Button
aria-label={intl.formatMessage({
id : 'room.closeMeeting',

View File

@ -306,6 +306,33 @@ const ListPeer = (props) =>
</IconButton>
</Tooltip>
}
{ isModerator && screenConsumer &&
<Tooltip
title={intl.formatMessage({
id : 'tooltip.muteScreenSharingModerator',
defaultMessage : 'Mute participant screen share globally'
})}
placement='bottom'
>
<IconButton
className={classes.buttons}
style={{ color: green[500] }}
disabled={!isModerator || peer.stopPeerScreenSharingInProgress}
onClick={(e) =>
{
e.stopPropagation();
roomClient.stopPeerScreenSharing(peer.id);
}}
>
{ !screenConsumer.remotelyPaused ?
<ScreenIcon />
:
<ScreenOffIcon />
}
</IconButton>
</Tooltip>
}
{children}
</div>
);

View File

@ -82,6 +82,11 @@ const peer = (state = initialState, action) =>
stopPeerVideoInProgress : action.payload.flag
};
case 'STOP_PEER_SCREEN_SHARING_IN_PROGRESS':
return {
...state,
stopPeerScreenSharingInProgress : action.payload.flag
};
default:
return state;
}
@ -118,6 +123,7 @@ const peers = (state = initialState, action) =>
case 'REMOVE_PEER_ROLE':
case 'STOP_PEER_AUDIO_IN_PROGRESS':
case 'STOP_PEER_VIDEO_IN_PROGRESS':
case 'STOP_PEER_SCREEN_SHARING_IN_PROGRESS':
{
const oldPeer = state[action.payload.peerId];

View File

@ -226,6 +226,9 @@ const room = (state = initialState, action) =>
case 'STOP_ALL_VIDEO_IN_PROGRESS':
return { ...state, stopAllVideoInProgress: action.payload.flag };
case 'STOP_ALL_SCREEN_SHARING_IN_PROGRESS':
return { ...state, stopAllScreenSharingInProgress: action.payload.flag };
case 'CLOSE_MEETING_IN_PROGRESS':
return { ...state, closeMeetingInProgress: action.payload.flag };

View File

@ -88,6 +88,7 @@
"tooltip.muteParticipantAudioModerator": null,
"tooltip.muteParticipantVideoModerator": null,
"tooltip.muteScreenSharingModerator": null,
"room.stopAllScreenSharing": null,
"label.roomName": "房间名称",
"label.chooseRoomButton": "继续",
@ -187,5 +188,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -63,6 +63,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -186,5 +187,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": "Über",
"room.shortcutKeys": "Tastaturkürzel",
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": "Du bist stummgeschaltet. Halte die SPACE-Taste um zu sprechen",
@ -187,5 +188,6 @@
"moderator.clearChat": "Moderator hat Chat gelöscht",
"moderator.clearFiles": "Moderator hat geteilte Dateiliste gelöscht",
"moderator.muteAudio": "Moderator hat dich stummgeschaltet",
"moderator.muteVideo": "Moderator hat dein Video gestoppt"
"moderator.muteVideo": "Moderator hat dein Video gestoppt",
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -187,5 +188,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -187,5 +188,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": "About",
"room.shortcutKeys": "Shortcut Keys",
"room.browsePeersSpotlight": "Browse participants into Spotlight",
"room.stopAllScreenSharing": "Stop all screen sharing",
"me.mutedPTT": "You are muted, hold down SPACE-BAR to talk",
@ -187,5 +188,6 @@
"moderator.clearChat": "Moderator cleared the chat",
"moderator.clearFiles": "Moderator cleared the files",
"moderator.muteAudio": "Moderator muted your audio",
"moderator.muteVideo": "Moderator muted your video"
"moderator.muteVideo": "Moderator muted your video",
"moderator.muteScreenSharing": "Moderator muted your screen sharing"
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -187,5 +188,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -186,5 +187,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": "O programu",
"room.shortcutKeys": "Prečaci",
"room.browsePeersSpotlight": "Pretražite sudionike u središtu pažnje",
"room.stopAllScreenSharing": null,
"me.mutedPTT": "Utišani ste, pritisnite i držite SPACE tipku za razgovor",
@ -187,5 +188,6 @@
"moderator.clearChat": "Moderator je izbrisao razgovor",
"moderator.clearFiles": "Moderator je izbrisao datoteke",
"moderator.muteAudio": "Moderator je utišao tvoj zvuk",
"moderator.muteVideo": "Moderator je zaustavio tvoj video"
"moderator.muteVideo": "Moderator je zaustavio tvoj video",
"moderator.muteScreenSharing": null
}

View File

@ -63,7 +63,8 @@
"room.help": "Segítség",
"room.about": "Névjegy",
"room.shortcutKeys": "Billentyűparancsok",
"room.browsePeersSpotlight": null,
"room.browsePeersSpotlight": "Résztvevők böngészése",
"room.stopAllScreenSharing": "Minden képernyőmegosztás leállítása",
"me.mutedPTT": "Némítva vagy, ha beszélnél nyomd le a szóköz billentyűt",
@ -187,5 +188,6 @@
"moderator.clearChat": "A moderátor kiürítette a chat történelmet",
"moderator.clearFiles": "A moderátor kiürítette a file megosztás történelmet",
"moderator.muteAudio": "A moderátor elnémította a hangod",
"moderator.muteVideo": "A moderátor elnémította a videód"
"moderator.muteVideo": "A moderátor elnémította a videód",
"moderator.muteScreenSharing": "A moderátor leállította képernyőmegosztásod"
}

View File

@ -64,6 +64,7 @@
"room.about": "Informazioni su",
"room.shortcutKeys": "Scorciatoie da tastiera",
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": "Sei mutato, tieni premuto SPAZIO per parlare",
@ -187,5 +188,6 @@
"moderator.clearChat": "Il moderatore ha pulito la chat",
"moderator.clearFiles": "Il moderatore ha pulito i file",
"moderator.muteAudio": "Il moderatore ha mutato il tuo audio",
"moderator.muteVideo": "Il moderatore ha fermato il tuo video"
"moderator.muteVideo": "Il moderatore ha fermato il tuo video",
"moderator.muteScreenSharing": null
}

View File

@ -63,6 +63,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": "Jūs esat noklusināts. Turiet taustiņu SPACE-BAR, lai runātu",
@ -181,5 +182,6 @@
"moderator.clearChat": "Moderators nodzēsa tērziņus",
"moderator.clearFiles": "Moderators notīrīja failus",
"moderator.muteAudio": "Moderators noklusināja jūsu mikrofonu",
"moderator.muteVideo": "Moderators atslēdza jūsu kameru"
"moderator.muteVideo": "Moderators atslēdza jūsu kameru",
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": "Du er dempet, hold nede SPACE for å snakke",
@ -187,5 +188,6 @@
"moderator.clearChat": "Moderator tømte chatten",
"moderator.clearFiles": "Moderator fjernet filer",
"moderator.muteAudio": "Moderator mutet lyden din",
"moderator.muteVideo": "Moderator mutet videoen din"
"moderator.muteVideo": "Moderator mutet videoen din",
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": "O pogramie",
"room.shortcutKeys": "Skróty klawiaturowe",
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": "Masz wyciszony mikrofon, przytrzymaj spację aby mówić",
@ -187,5 +188,6 @@
"moderator.clearChat": "Moderator wyczyścił chat",
"moderator.clearFiles": "Moderator wyczyścił pliki",
"moderator.muteAudio": "Moderator wyciszył audio",
"moderator.muteVideo": "Moderator wyciszył twoje video"
"moderator.muteVideo": "Moderator wyciszył twoje video",
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -187,5 +188,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -187,5 +188,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -179,5 +180,6 @@
"devices.screenSharingError": "Ekranınıza erişilirken bir hata oluştu",
"devices.cameraDisconnected": "Kamera bağlı değil",
"devices.cameraError": "Kameranıza erişilirken bir hata oluştu"
"devices.cameraError": "Kameranıza erişilirken bir hata oluştu",
"moderator.muteScreenSharing": null
}

View File

@ -63,6 +63,7 @@
"room.help": "幫助",
"room.about": "關於",
"room.shortcutKeys": "鍵盤快速鍵",
"room.stopAllScreenSharing": null,
"me.mutedPTT": "您已靜音,請按下 空白鍵 來說話",
@ -186,5 +187,6 @@
"moderator.clearChat": "管理員清除了聊天",
"moderator.clearFiles": "管理員清除了所有檔案",
"moderator.muteAudio": "您已被管理員靜音",
"moderator.muteVideo": "您的視訊已被管理員關閉"
"moderator.muteVideo": "您的視訊已被管理員關閉",
"moderator.muteScreenSharing": null
}

View File

@ -64,6 +64,7 @@
"room.about": null,
"room.shortcutKeys": null,
"room.browsePeersSpotlight": null,
"room.stopAllScreenSharing": null,
"me.mutedPTT": null,
@ -187,5 +188,6 @@
"moderator.clearChat": null,
"moderator.clearFiles": null,
"moderator.muteAudio": null,
"moderator.muteVideo": null
"moderator.muteVideo": null,
"moderator.muteScreenSharing": null
}

View File

@ -1441,6 +1441,38 @@ class Room extends EventEmitter
break;
}
case 'moderator:stopAllScreenSharing':
{
if (!this._hasPermission(peer, MODERATE_ROOM))
throw new Error('peer not authorized');
// Spread to others
this._notification(peer.socket, 'moderator:stopScreenSharing', null, true);
cb();
break;
}
case 'moderator:stopScreenSharing':
{
if (!this._hasPermission(peer, MODERATE_ROOM))
throw new Error('peer not authorized');
const { peerId } = request.data;
const stopVideoPeer = this._peers[peerId];
if (!stopVideoPeer)
throw new Error(`peer with id "${peerId}" not found`);
this._notification(stopVideoPeer.socket, 'moderator:stopScreenSharing');
cb();
break;
}
case 'moderator:closeMeeting':
{
if (!this._hasPermission(peer, MODERATE_ROOM))