@@ -442,6 +442,8 @@ 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 });
room.update(cx, |room, cx| room.set_location(location.as_ref(), cx))
}
} else {
@@ -26,6 +26,9 @@ pub const RECONNECT_TIMEOUT: Duration = Duration::from_secs(30);
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Event {
+ RoomJoined {
+ channel_id: Option<u64>,
+ },
ParticipantLocationChanged {
participant_id: proto::PeerId,
},
@@ -1,6 +1,6 @@
use crate::{channel_view::ChannelView, is_channels_feature_enabled, ChatPanelSettings};
use anyhow::Result;
-use call::ActiveCall;
+use call::{room, ActiveCall};
use channel::{ChannelChat, ChannelChatEvent, ChannelMessageId, ChannelStore};
use client::Client;
use collections::HashMap;
@@ -140,6 +140,18 @@ impl ChatPanel {
cx.notify();
},
));
+ this.subscriptions.push(cx.subscribe(
+ &ActiveCall::global(cx),
+ move |this: &mut Self, _, event: &room::Event, cx| match event {
+ room::Event::RoomJoined { channel_id } => {
+ if let Some(channel_id) = channel_id {
+ this.select_channel(*channel_id, None, cx)
+ .detach_and_log_err(cx)
+ }
+ }
+ _ => {}
+ },
+ ));
this
})