Sort call feeds consistently when choosing active speaker
This commit is contained in:
		
					parent
					
						
							
								5c4bab2a8a
							
						
					
				
			
			
				commit
				
					
						1ff9073a1a
					
				
			
		
					 1 changed files with 11 additions and 0 deletions
				
			
		| 
						 | 
					@ -30,6 +30,17 @@ function getActiveSpeakerFeed(
 | 
				
			||||||
): CallFeed | null {
 | 
					): CallFeed | null {
 | 
				
			||||||
  const activeSpeakerFeeds = feeds.filter((f) => !f.isAudioMuted());
 | 
					  const activeSpeakerFeeds = feeds.filter((f) => !f.isAudioMuted());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // make sure the feeds are in a deterministic order so every client picks
 | 
				
			||||||
 | 
					  // the same one as the active speaker
 | 
				
			||||||
 | 
					  const collator = new Intl.Collator("en", {
 | 
				
			||||||
 | 
					    sensitivity: "variant",
 | 
				
			||||||
 | 
					    usage: "sort",
 | 
				
			||||||
 | 
					    ignorePunctuation: false,
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  activeSpeakerFeeds.sort((a: CallFeed, b: CallFeed): number =>
 | 
				
			||||||
 | 
					    collator.compare(a.userId, b.userId)
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  let activeSpeakerFeed = null;
 | 
					  let activeSpeakerFeed = null;
 | 
				
			||||||
  let highestPowerLevel = null;
 | 
					  let highestPowerLevel = null;
 | 
				
			||||||
  for (const feed of activeSpeakerFeeds) {
 | 
					  for (const feed of activeSpeakerFeeds) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue