From a8dabf73433ff1242fcb409309fd4d1bddcc7bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Fri, 1 May 2020 21:45:16 +0200 Subject: [PATCH] If peer gets role PROMOTE_PEER, notify peer of all peers in lobby, fixes #208 --- app/src/RoomClient.js | 39 +++++++++++++++++++++++++++++++++++++++ server/lib/Room.js | 11 +++++++++++ 2 files changed, 50 insertions(+) diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index d2ab9bc..075ff94 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -2052,6 +2052,8 @@ export default class RoomClient lobbyPeerActions.addLobbyPeer(peerId)); store.dispatch( roomActions.setToolbarsVisible(true)); + + this._soundNotification(); store.dispatch(requestActions.notify( { @@ -2063,6 +2065,43 @@ export default class RoomClient break; } + + case 'parkedPeers': + { + const { lobbyPeers } = notification.data; + + if (lobbyPeers.length > 0) + { + lobbyPeers.forEach((peer) => + { + store.dispatch( + lobbyPeerActions.addLobbyPeer(peer.peerId)); + store.dispatch( + lobbyPeerActions.setLobbyPeerDisplayName( + peer.displayName, + peer.peerId + ) + ); + store.dispatch( + lobbyPeerActions.setLobbyPeerPicture(peer.picture)); + }); + + store.dispatch( + roomActions.setToolbarsVisible(true)); + + this._soundNotification(); + + store.dispatch(requestActions.notify( + { + text : intl.formatMessage({ + id : 'room.newLobbyPeer', + defaultMessage : 'New participant entered the lobby' + }) + })); + } + + break; + } case 'lobby:peerClosed': { diff --git a/server/lib/Room.js b/server/lib/Room.js index c95ed93..d15ae12 100644 --- a/server/lib/Room.js +++ b/server/lib/Room.js @@ -530,6 +530,17 @@ class Room extends EventEmitter peerId : peer.id, role : newRole }, true, true); + + // Got permission to promote peers, notify peer of + // peers in lobby + if (permissionsFromRoles.PROMOTE_PEER.includes(newRole)) + { + const lobbyPeers = this._lobby.peerList(); + + lobbyPeers.length > 0 && this._notification(peer.socket, 'parkedPeers', { + lobbyPeers + }); + } }); peer.on('lostRole', ({ oldRole }) =>