Update chat panel with current channel

This commit is contained in:
Conrad Irwin 2024-01-12 10:23:22 -07:00
parent bc09ce6ffc
commit dc158f708f
3 changed files with 18 additions and 1 deletions

View File

@ -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 {

View File

@ -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,
},

View File

@ -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
})