Change summary
server/src/tests.rs | 19 ++++++++++++-------
zed/src/channel.rs | 31 +++++++++++++++++++++++++++++++
zed/src/lib.rs | 1 +
zed/src/rpc.rs | 1 +
4 files changed, 45 insertions(+), 7 deletions(-)
Detailed changes
@@ -513,13 +513,18 @@ async fn test_basic_chat(mut cx_a: TestAppContext, cx_b: TestAppContext) {
)
.await
.unwrap();
- assert_eq!(
- db.get_recent_channel_messages(channel_id, 50)
- .await
- .unwrap()[0]
- .body,
- "first message!"
- );
+
+ let channels_a = client_a.get_channels().await;
+ assert_eq!(channels_a.len(), 1);
+ assert_eq!(channels_a[0].read(&cx_a).name(), "test-channel");
+
+ // assert_eq!(
+ // db.get_recent_channel_messages(channel_id, 50)
+ // .await
+ // .unwrap()[0]
+ // .body,
+ // "first message!"
+ // );
}
struct TestServer {
@@ -0,0 +1,31 @@
+use crate::rpc::Client;
+use gpui::{Entity, ModelHandle, WeakModelHandle};
+use std::{
+ collections::{HashMap, VecDeque},
+ sync::Arc,
+};
+
+pub struct ChannelList {
+ channels: HashMap<u64, WeakModelHandle<Channel>>,
+ rpc: Arc<Client>,
+}
+
+pub struct Channel {
+ id: u64,
+ name: String,
+ first_message_id: Option<u64>,
+ messages: Option<VecDeque<ChannelMessage>>,
+ rpc: Arc<Client>,
+}
+
+pub struct ChannelMessage {
+ id: u64,
+}
+
+enum Event {}
+
+impl Entity for ChannelList {
+ type Event = Event;
+}
+
+impl ChannelList {}
@@ -1,4 +1,5 @@
pub mod assets;
+pub mod channel;
pub mod editor;
pub mod file_finder;
pub mod fs;
@@ -29,6 +29,7 @@ pub struct Client {
pub struct ClientState {
connection_id: Option<ConnectionId>,
pub shared_worktrees: HashMap<u64, WeakModelHandle<Worktree>>,
+ pub channel_list: Option<WeakModelHandle<ChannelList>>,
pub languages: Arc<LanguageRegistry>,
}