diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 143aea9..16f0dd4 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -304,12 +304,18 @@ export default class RoomClient { case String.fromCharCode(37): { - this._spotlights.setPrevAsSelected(); + const newPeerId = this._spotlights.getPrevAsSelected( + store.getState().room.selectedPeerId); + + if (newPeerId) this.setSelectedPeer(newPeerId); break; } case String.fromCharCode(39): { - this._spotlights.setNextAsSelected(); + const newPeerId = this._spotlights.getNextAsSelected( + store.getState().room.selectedPeerId); + + if (newPeerId) this.setSelectedPeer(newPeerId); break; } case 'A': // Activate advanced mode diff --git a/app/src/Spotlights.js b/app/src/Spotlights.js index 5d9f406..10d6638 100644 --- a/app/src/Spotlights.js +++ b/app/src/Spotlights.js @@ -46,90 +46,72 @@ export default class Spotlights extends EventEmitter } } - setNextAsSelected() + getNextAsSelected(peerId) { - let peerId = null; + let newSelectedPeer = null; - if (this._selectedSpotlights.length > 0) - { - peerId = this._selectedSpotlights[0]; - } - else if (this._unmutablePeerList.length > 0) + if (peerId == null && this._unmutablePeerList.length > 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); let index = oldIndex; - + index++; - do + for (let i = 0; i < this._unmutablePeerList.length; i++) { - if (index >= this._unmutablePeerList.length) + if (index >= this._unmutablePeerList.length) { index = 0; } - const newSelectedPeer = this._unmutablePeerList[index]; - - if (!this._currentSpotlights.includes(newSelectedPeer)) + newSelectedPeer = this._unmutablePeerList[index]; + if (!this._currentSpotlights.includes(newSelectedPeer)) { - this.setPeerSpotlight(newSelectedPeer); break; } index++; - if (index === oldIndex) - { - break; - } - } while (true); + } } + + return newSelectedPeer; } - setPrevAsSelected() + getPrevAsSelected(peerId) { - let peerId = null; + let newSelectedPeer = null; - if (this._selectedSpotlights.length > 0) - { - peerId = this._selectedSpotlights[0]; - } - else if (this._unmutablePeerList.length > 0) + if (peerId == null && this._unmutablePeerList.length > 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); let index = oldIndex; - + index--; - do + for (let i = 0; i < this._unmutablePeerList.length; i++) { - if (index < 0) + if (index < 0) { index = this._unmutablePeerList.length - 1; } - const newSelectedPeer = this._unmutablePeerList[index]; - - if (!this._currentSpotlights.includes(newSelectedPeer)) + newSelectedPeer = this._unmutablePeerList[index]; + if (!this._currentSpotlights.includes(newSelectedPeer)) { - this.setPeerSpotlight(newSelectedPeer); break; } index--; - if (index === oldIndex) - { - break; - } - } while (true); + } } + + return newSelectedPeer; } setPeerSpotlight(peerId)