Assign unique color indices to room participants, use those instead of replica_ids

Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Antonio <antonio@zed.dev>
This commit is contained in:
Max Brunsfeld 2023-09-26 15:19:38 -06:00
parent 7711530704
commit 545b5e0161
35 changed files with 707 additions and 639 deletions

View file

@ -21,6 +21,7 @@ use live_kit_client::{
use postage::stream::Stream;
use project::Project;
use std::{future::Future, mem, pin::Pin, sync::Arc, time::Duration};
use theme::ColorIndex;
use util::{post_inc, ResultExt, TryFutureExt};
pub const RECONNECT_TIMEOUT: Duration = Duration::from_secs(30);
@ -714,6 +715,7 @@ impl Room {
participant.user_id,
RemoteParticipant {
user: user.clone(),
color_index: ColorIndex(participant.color_index),
peer_id,
projects: participant.projects,
location,
@ -807,6 +809,15 @@ impl Room {
let _ = this.leave(cx);
}
this.user_store.update(cx, |user_store, cx| {
let color_indices_by_user_id = this
.remote_participants
.iter()
.map(|(user_id, participant)| (*user_id, participant.color_index))
.collect();
user_store.set_color_indices(color_indices_by_user_id, cx);
});
this.check_invariants();
cx.notify();
});