diff --git a/app/src/components/MeetingDrawer/ParticipantList/ParticipantList.js b/app/src/components/MeetingDrawer/ParticipantList/ParticipantList.js index dbf5491..8f6453b 100644 --- a/app/src/components/MeetingDrawer/ParticipantList/ParticipantList.js +++ b/app/src/components/MeetingDrawer/ParticipantList/ParticipantList.js @@ -2,7 +2,7 @@ import React from 'react'; import { connect } from 'react-redux'; import { passivePeersSelector, - spotlightPeersSelector + spotlightSortedPeersSelector } from '../../Selectors'; import classNames from 'classnames'; import { withStyles } from '@material-ui/core/styles'; @@ -114,16 +114,20 @@ class ParticipantList extends React.PureComponent defaultMessage='Participants in Spotlight' /> - { spotlightPeers.map((peerId) => ( + { spotlightPeers.map((peer) => (
  • roomClient.setSelectedPeer(peerId)} + onClick={() => roomClient.setSelectedPeer(peer.id)} > - - + +
  • ))} @@ -135,16 +139,16 @@ class ParticipantList extends React.PureComponent defaultMessage='Passive Participants' /> - { passivePeers.map((peerId) => ( + { passivePeers.map((peer) => (
  • roomClient.setSelectedPeer(peerId)} + onClick={() => roomClient.setSelectedPeer(peer.id)} > @@ -174,7 +178,7 @@ const mapStateToProps = (state) => state.me.roles.includes(userRoles.ADMIN), passivePeers : passivePeersSelector(state), selectedPeerId : state.room.selectedPeerId, - spotlightPeers : spotlightPeersSelector(state) + spotlightPeers : spotlightSortedPeersSelector(state) }; }; diff --git a/app/src/components/Selectors.js b/app/src/components/Selectors.js index 7a9cbfc..34bb647 100644 --- a/app/src/components/Selectors.js +++ b/app/src/components/Selectors.js @@ -12,6 +12,10 @@ const peersKeySelector = createSelector( peersSelector, (peers) => Object.keys(peers) ); +const peersValueSelector = createSelector( + peersSelector, + (peers) => Object.values(peers) +); export const lobbyPeersKeySelector = createSelector( lobbyPeersSelector, @@ -74,15 +78,23 @@ export const spotlightPeersSelector = createSelector( (spotlights, peers) => peers.filter((peerId) => spotlights.includes(peerId)) ); +export const spotlightSortedPeersSelector = createSelector( + spotlightsSelector, + peersValueSelector, + (spotlights, peers) => peers.filter((peer) => spotlights.includes(peer.id)) + .sort((a, b) => a.displayName.localeCompare(b.displayName)) +); + export const peersLengthSelector = createSelector( peersSelector, (peers) => Object.values(peers).length ); export const passivePeersSelector = createSelector( - peersKeySelector, + peersValueSelector, spotlightsSelector, - (peers, spotlights) => peers.filter((peerId) => !spotlights.includes(peerId)) + (peers, spotlights) => peers.filter((peer) => !spotlights.includes(peer.id)) + .sort((a, b) => a.displayName.localeCompare(b.displayName)) ); export const videoBoxesSelector = createSelector(