Open chat panel for guests

Conrad Irwin created

Change summary

crates/call/src/call.rs            | 6 ++++--
crates/call/src/room.rs            | 1 +
crates/collab_ui/src/chat_panel.rs | 9 +++++++--
3 files changed, 12 insertions(+), 4 deletions(-)

Detailed changes

crates/call/src/call.rs 🔗

@@ -442,8 +442,10 @@ impl ActiveCall {
                         .location
                         .as_ref()
                         .and_then(|location| location.upgrade());
-                    let channel_id = room.update(cx, |room, cx| room.channel_id());
-                    cx.emit(Event::RoomJoined { channel_id });
+                    let (channel_id, role) = room.update(cx, |room, _| {
+                        (room.channel_id(), room.local_participant().role)
+                    });
+                    cx.emit(Event::RoomJoined { channel_id, role });
                     room.update(cx, |room, cx| room.set_location(location.as_ref(), cx))
                 }
             } else {

crates/call/src/room.rs 🔗

@@ -28,6 +28,7 @@ pub const RECONNECT_TIMEOUT: Duration = Duration::from_secs(30);
 pub enum Event {
     RoomJoined {
         channel_id: Option<u64>,
+        role: proto::ChannelRole,
     },
     ParticipantLocationChanged {
         participant_id: proto::PeerId,

crates/collab_ui/src/chat_panel.rs 🔗

@@ -16,6 +16,7 @@ use menu::Confirm;
 use message_editor::MessageEditor;
 use project::Fs;
 use rich_text::RichText;
+use rpc::proto;
 use serde::{Deserialize, Serialize};
 use settings::{Settings, SettingsStore};
 use std::sync::Arc;
@@ -143,10 +144,14 @@ impl ChatPanel {
             this.subscriptions.push(cx.subscribe(
                 &ActiveCall::global(cx),
                 move |this: &mut Self, _, event: &room::Event, cx| match event {
-                    room::Event::RoomJoined { channel_id } => {
+                    room::Event::RoomJoined { channel_id, role } => {
                         if let Some(channel_id) = channel_id {
                             this.select_channel(*channel_id, None, cx)
-                                .detach_and_log_err(cx)
+                                .detach_and_log_err(cx);
+
+                            if *role == proto::ChannelRole::Guest {
+                                cx.emit(PanelEvent::Activate)
+                            }
                         }
                     }
                     _ => {}