From 95ea6647259d812da38c5b473600dc22ec602a8d Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 22 Aug 2023 11:02:13 -0700 Subject: [PATCH] WIP --- crates/channel/src/channel_buffer.rs | 2 +- .../20221109000000_test_schema.sql | 9 +- .../20230819154600_add_channel_buffers.sql | 9 +- crates/collab/src/db/queries/buffers.rs | 188 ++++++++++-------- crates/collab/src/db/queries/rooms.rs | 36 +++- crates/collab/src/db/tables/buffer.rs | 8 - crates/collab/src/db/tables/channel.rs | 8 + .../db/tables/channel_buffer_collaborator.rs | 17 +- crates/collab/src/db/tests/buffer_tests.rs | 28 ++- crates/collab/src/rpc.rs | 28 +-- crates/rpc/proto/zed.proto | 14 +- crates/rpc/src/proto.rs | 10 +- 12 files changed, 211 insertions(+), 146 deletions(-) diff --git a/crates/channel/src/channel_buffer.rs b/crates/channel/src/channel_buffer.rs index 372bd319a1..d88810ff56 100644 --- a/crates/channel/src/channel_buffer.rs +++ b/crates/channel/src/channel_buffer.rs @@ -36,7 +36,7 @@ impl ChannelBuffer { ) -> Task>> { cx.spawn(|mut cx| async move { let response = client - .request(proto::OpenChannelBuffer { channel_id }) + .request(proto::JoinChannelBuffer { channel_id }) .await?; let base_text = response.base_text; diff --git a/crates/collab/migrations.sqlite/20221109000000_test_schema.sql b/crates/collab/migrations.sqlite/20221109000000_test_schema.sql index 12ff2caec5..f39f0cca59 100644 --- a/crates/collab/migrations.sqlite/20221109000000_test_schema.sql +++ b/crates/collab/migrations.sqlite/20221109000000_test_schema.sql @@ -238,15 +238,16 @@ CREATE TABLE "buffer_snapshots" ( CREATE TABLE "channel_buffer_collaborators" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, - "buffer_id" INTEGER NOT NULL REFERENCES buffers (id) ON DELETE CASCADE, + "channel_id" INTEGER NOT NULL REFERENCES channels (id) ON DELETE CASCADE, "connection_id" INTEGER NOT NULL, "connection_server_id" INTEGER NOT NULL REFERENCES servers (id) ON DELETE CASCADE, + "connection_lost" BOOLEAN NOT NULL DEFAULT false, "user_id" INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE, "replica_id" INTEGER NOT NULL ); -CREATE INDEX "index_channel_buffer_collaborators_on_buffer_id" ON "channel_buffer_collaborators" ("buffer_id"); -CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_buffer_id_and_replica_id" ON "channel_buffer_collaborators" ("buffer_id", "replica_id"); +CREATE INDEX "index_channel_buffer_collaborators_on_channel_id" ON "channel_buffer_collaborators" ("channel_id"); +CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_channel_id_and_replica_id" ON "channel_buffer_collaborators" ("channel_id", "replica_id"); CREATE INDEX "index_channel_buffer_collaborators_on_connection_server_id" ON "channel_buffer_collaborators" ("connection_server_id"); CREATE INDEX "index_channel_buffer_collaborators_on_connection_id" ON "channel_buffer_collaborators" ("connection_id"); -CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_buffer_id_connection_id_and_server_id" ON "channel_buffer_collaborators" ("buffer_id", "connection_id", "connection_server_id"); +CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_channel_id_connection_id_and_server_id" ON "channel_buffer_collaborators" ("channel_id", "connection_id", "connection_server_id"); diff --git a/crates/collab/migrations/20230819154600_add_channel_buffers.sql b/crates/collab/migrations/20230819154600_add_channel_buffers.sql index 8ccd7acadf..f6bd2879c6 100644 --- a/crates/collab/migrations/20230819154600_add_channel_buffers.sql +++ b/crates/collab/migrations/20230819154600_add_channel_buffers.sql @@ -27,15 +27,16 @@ CREATE TABLE "buffer_snapshots" ( CREATE TABLE "channel_buffer_collaborators" ( "id" SERIAL PRIMARY KEY, - "buffer_id" INTEGER NOT NULL REFERENCES buffers (id) ON DELETE CASCADE, + "channel_id" INTEGER NOT NULL REFERENCES channels (id) ON DELETE CASCADE, "connection_id" INTEGER NOT NULL, "connection_server_id" INTEGER NOT NULL REFERENCES servers (id) ON DELETE CASCADE, + "connection_lost" BOOLEAN NOT NULL DEFAULT FALSE, "user_id" INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE, "replica_id" INTEGER NOT NULL ); -CREATE INDEX "index_channel_buffer_collaborators_on_buffer_id" ON "channel_buffer_collaborators" ("buffer_id"); -CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_buffer_id_and_replica_id" ON "channel_buffer_collaborators" ("buffer_id", "replica_id"); +CREATE INDEX "index_channel_buffer_collaborators_on_channel_id" ON "channel_buffer_collaborators" ("channel_id"); +CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_channel_id_and_replica_id" ON "channel_buffer_collaborators" ("channel_id", "replica_id"); CREATE INDEX "index_channel_buffer_collaborators_on_connection_server_id" ON "channel_buffer_collaborators" ("connection_server_id"); CREATE INDEX "index_channel_buffer_collaborators_on_connection_id" ON "channel_buffer_collaborators" ("connection_id"); -CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_buffer_id_connection_id_and_server_id" ON "channel_buffer_collaborators" ("buffer_id", "connection_id", "connection_server_id"); +CREATE UNIQUE INDEX "index_channel_buffer_collaborators_on_channel_id_connection_id_and_server_id" ON "channel_buffer_collaborators" ("channel_id", "connection_id", "connection_server_id"); diff --git a/crates/collab/src/db/queries/buffers.rs b/crates/collab/src/db/queries/buffers.rs index 3f86f897d8..473dd1afe9 100644 --- a/crates/collab/src/db/queries/buffers.rs +++ b/crates/collab/src/db/queries/buffers.rs @@ -2,66 +2,12 @@ use super::*; use prost::Message; impl Database { - pub async fn update_buffer( - &self, - buffer_id: BufferId, - operations: &[proto::Operation], - ) -> Result<()> { - self.transaction(|tx| async move { - let buffer = buffer::Entity::find_by_id(buffer_id) - .one(&*tx) - .await? - .ok_or_else(|| anyhow!("no such buffer"))?; - buffer_operation::Entity::insert_many(operations.iter().filter_map(|operation| { - match operation.variant.as_ref()? { - proto::operation::Variant::Edit(operation) => { - let value = - serialize_edit_operation(&operation.ranges, &operation.new_text); - let version = serialize_version(&operation.version); - Some(buffer_operation::ActiveModel { - buffer_id: ActiveValue::Set(buffer_id), - epoch: ActiveValue::Set(buffer.epoch), - replica_id: ActiveValue::Set(operation.replica_id as i32), - lamport_timestamp: ActiveValue::Set(operation.lamport_timestamp as i32), - local_timestamp: ActiveValue::Set(operation.local_timestamp as i32), - is_undo: ActiveValue::Set(false), - version: ActiveValue::Set(version), - value: ActiveValue::Set(value), - }) - } - proto::operation::Variant::Undo(operation) => { - let value = serialize_undo_operation(&operation.counts); - let version = serialize_version(&operation.version); - Some(buffer_operation::ActiveModel { - buffer_id: ActiveValue::Set(buffer_id), - epoch: ActiveValue::Set(buffer.epoch), - replica_id: ActiveValue::Set(operation.replica_id as i32), - lamport_timestamp: ActiveValue::Set(operation.lamport_timestamp as i32), - local_timestamp: ActiveValue::Set(operation.local_timestamp as i32), - is_undo: ActiveValue::Set(true), - version: ActiveValue::Set(version), - value: ActiveValue::Set(value), - }) - } - proto::operation::Variant::UpdateSelections(_) => None, - proto::operation::Variant::UpdateDiagnostics(_) => None, - proto::operation::Variant::UpdateCompletionTriggers(_) => None, - } - })) - .exec(&*tx) - .await?; - - Ok(()) - }) - .await - } - - pub async fn join_buffer_for_channel( + pub async fn join_channel_buffer( &self, channel_id: ChannelId, user_id: UserId, connection: ConnectionId, - ) -> Result { + ) -> Result { self.transaction(|tx| async move { let tx = tx; @@ -90,8 +36,8 @@ impl Database { }; // Join the collaborators - let mut collaborators = buffer - .find_related(channel_buffer_collaborator::Entity) + let mut collaborators = channel_buffer_collaborator::Entity::find() + .filter(channel_buffer_collaborator::Column::ChannelId.eq(channel_id)) .all(&*tx) .await?; let replica_ids = collaborators @@ -103,7 +49,7 @@ impl Database { replica_id.0 += 1; } let collaborator = channel_buffer_collaborator::ActiveModel { - buffer_id: ActiveValue::Set(buffer.id), + channel_id: ActiveValue::Set(channel_id), connection_id: ActiveValue::Set(connection.id as i32), connection_server_id: ActiveValue::Set(ServerId(connection.owner_id as i32)), user_id: ActiveValue::Set(user_id), @@ -168,7 +114,7 @@ impl Database { }) } - Ok(proto::OpenChannelBufferResponse { + Ok(proto::JoinChannelBufferResponse { buffer_id: buffer.id.to_proto(), base_text, operations, @@ -185,32 +131,112 @@ impl Database { .await } - pub async fn get_buffer_collaborators(&self, buffer: BufferId) -> Result<()> { + pub async fn leave_channel_buffer( + &self, + channel_id: ChannelId, + connection: ConnectionId, + ) -> Result> { + self.transaction(|tx| async move { + let result = channel_buffer_collaborator::Entity::delete_many() + .filter( + Condition::all() + .add(channel_buffer_collaborator::Column::ChannelId.eq(channel_id)) + .add( + channel_buffer_collaborator::Column::ConnectionId + .eq(connection.id as i32), + ) + .add( + channel_buffer_collaborator::Column::ConnectionServerId + .eq(connection.owner_id as i32), + ), + ) + .exec(&*tx) + .await?; + if result.rows_affected == 0 { + Err(anyhow!("not a collaborator on this project"))?; + } + + let mut connections = Vec::new(); + let mut rows = channel_buffer_collaborator::Entity::find() + .filter( + Condition::all() + .add(channel_buffer_collaborator::Column::ChannelId.eq(channel_id)), + ) + .stream(&*tx) + .await?; + while let Some(row) = rows.next().await { + let row = row?; + connections.push(ConnectionId { + id: row.connection_id as u32, + owner_id: row.connection_server_id.0 as u32, + }); + } + + Ok(connections) + }) + .await + } + + pub async fn leave_channel_buffers( + &self, + connection: ConnectionId, + ) -> Result> { + // + } + + pub async fn get_channel_buffer_collaborators(&self, channel_id: ChannelId) -> Result<()> { todo!() } - pub async fn leave_buffer(&self, buffer: BufferId, user: UserId) -> Result<()> { + pub async fn update_channel_buffer( + &self, + buffer_id: BufferId, + operations: &[proto::Operation], + ) -> Result<()> { self.transaction(|tx| async move { - //TODO - // let tx = tx; - // let channel = channel::Entity::find_by_id(channel_id) - // .one(&*tx) - // .await? - // .ok_or_else(|| anyhow!("invalid channel"))?; + let buffer = buffer::Entity::find_by_id(buffer_id) + .one(&*tx) + .await? + .ok_or_else(|| anyhow!("no such buffer"))?; + buffer_operation::Entity::insert_many(operations.iter().filter_map(|operation| { + match operation.variant.as_ref()? { + proto::operation::Variant::Edit(operation) => { + let value = + serialize_edit_operation(&operation.ranges, &operation.new_text); + let version = serialize_version(&operation.version); + Some(buffer_operation::ActiveModel { + buffer_id: ActiveValue::Set(buffer_id), + epoch: ActiveValue::Set(buffer.epoch), + replica_id: ActiveValue::Set(operation.replica_id as i32), + lamport_timestamp: ActiveValue::Set(operation.lamport_timestamp as i32), + local_timestamp: ActiveValue::Set(operation.local_timestamp as i32), + is_undo: ActiveValue::Set(false), + version: ActiveValue::Set(version), + value: ActiveValue::Set(value), + }) + } + proto::operation::Variant::Undo(operation) => { + let value = serialize_undo_operation(&operation.counts); + let version = serialize_version(&operation.version); + Some(buffer_operation::ActiveModel { + buffer_id: ActiveValue::Set(buffer_id), + epoch: ActiveValue::Set(buffer.epoch), + replica_id: ActiveValue::Set(operation.replica_id as i32), + lamport_timestamp: ActiveValue::Set(operation.lamport_timestamp as i32), + local_timestamp: ActiveValue::Set(operation.local_timestamp as i32), + is_undo: ActiveValue::Set(true), + version: ActiveValue::Set(version), + value: ActiveValue::Set(value), + }) + } + proto::operation::Variant::UpdateSelections(_) => None, + proto::operation::Variant::UpdateDiagnostics(_) => None, + proto::operation::Variant::UpdateCompletionTriggers(_) => None, + } + })) + .exec(&*tx) + .await?; - // if let Some(id) = channel.main_buffer_id { - // return Ok(id); - // } else { - // let buffer = buffer::ActiveModel::new().insert(&*tx).await?; - // channel::ActiveModel { - // id: ActiveValue::Unchanged(channel_id), - // main_buffer_id: ActiveValue::Set(Some(buffer.id)), - // ..Default::default() - // } - // .update(&*tx) - // .await?; - // Ok(buffer.id) - // } Ok(()) }) .await diff --git a/crates/collab/src/db/queries/rooms.rs b/crates/collab/src/db/queries/rooms.rs index ee79f2cb4f..a85d257187 100644 --- a/crates/collab/src/db/queries/rooms.rs +++ b/crates/collab/src/db/queries/rooms.rs @@ -903,15 +903,35 @@ impl Database { ), ) .one(&*tx) - .await? - .ok_or_else(|| anyhow!("not a participant in any room"))?; + .await?; - room_participant::Entity::update(room_participant::ActiveModel { - answering_connection_lost: ActiveValue::set(true), - ..participant.into_active_model() - }) - .exec(&*tx) - .await?; + if let Some(participant) = participant { + room_participant::Entity::update(room_participant::ActiveModel { + answering_connection_lost: ActiveValue::set(true), + ..participant.into_active_model() + }) + .exec(&*tx) + .await?; + } + + channel_buffer_collaborator::Entity::update_many() + .filter( + Condition::all() + .add( + channel_buffer_collaborator::Column::ConnectionId + .eq(connection.id as i32), + ) + .add( + channel_buffer_collaborator::Column::ConnectionServerId + .eq(connection.owner_id as i32), + ), + ) + .set(channel_buffer_collaborator::ActiveModel { + connection_lost: ActiveValue::set(true), + ..Default::default() + }) + .exec(&*tx) + .await?; Ok(()) }) diff --git a/crates/collab/src/db/tables/buffer.rs b/crates/collab/src/db/tables/buffer.rs index f0187ad278..ec2ffd4a68 100644 --- a/crates/collab/src/db/tables/buffer.rs +++ b/crates/collab/src/db/tables/buffer.rs @@ -22,8 +22,6 @@ pub enum Relation { to = "super::channel::Column::Id" )] Channel, - #[sea_orm(has_many = "super::channel_buffer_collaborator::Entity")] - Collaborators, } impl Related for Entity { @@ -44,10 +42,4 @@ impl Related for Entity { } } -impl Related for Entity { - fn to() -> RelationDef { - Relation::Collaborators.def() - } -} - impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/collab/src/db/tables/channel.rs b/crates/collab/src/db/tables/channel.rs index 7f59e8d65f..05895ede4c 100644 --- a/crates/collab/src/db/tables/channel.rs +++ b/crates/collab/src/db/tables/channel.rs @@ -19,6 +19,8 @@ pub enum Relation { Buffer, #[sea_orm(has_many = "super::channel_member::Entity")] Member, + #[sea_orm(has_many = "super::channel_buffer_collaborator::Entity")] + BufferCollaborators, } impl Related for Entity { @@ -38,3 +40,9 @@ impl Related for Entity { Relation::Buffer.def() } } + +impl Related for Entity { + fn to() -> RelationDef { + Relation::BufferCollaborators.def() + } +} diff --git a/crates/collab/src/db/tables/channel_buffer_collaborator.rs b/crates/collab/src/db/tables/channel_buffer_collaborator.rs index 2e43e93e8e..ac2637b36e 100644 --- a/crates/collab/src/db/tables/channel_buffer_collaborator.rs +++ b/crates/collab/src/db/tables/channel_buffer_collaborator.rs @@ -1,4 +1,4 @@ -use crate::db::{BufferId, ChannelBufferCollaboratorId, ReplicaId, ServerId, UserId}; +use crate::db::{ChannelBufferCollaboratorId, ChannelId, ReplicaId, ServerId, UserId}; use rpc::ConnectionId; use sea_orm::entity::prelude::*; @@ -7,9 +7,10 @@ use sea_orm::entity::prelude::*; pub struct Model { #[sea_orm(primary_key)] pub id: ChannelBufferCollaboratorId, - pub buffer_id: BufferId, + pub channel_id: ChannelId, pub connection_id: i32, pub connection_server_id: ServerId, + pub connection_lost: bool, pub user_id: UserId, pub replica_id: ReplicaId, } @@ -26,16 +27,16 @@ impl Model { #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { #[sea_orm( - belongs_to = "super::buffer::Entity", - from = "Column::BufferId", - to = "super::buffer::Column::Id" + belongs_to = "super::channel::Entity", + from = "Column::ChannelId", + to = "super::channel::Column::Id" )] - Buffer, + Channel, } -impl Related for Entity { +impl Related for Entity { fn to() -> RelationDef { - Relation::Buffer.def() + Relation::Channel.def() } } diff --git a/crates/collab/src/db/tests/buffer_tests.rs b/crates/collab/src/db/tests/buffer_tests.rs index fff9938573..c25071e1a2 100644 --- a/crates/collab/src/db/tests/buffer_tests.rs +++ b/crates/collab/src/db/tests/buffer_tests.rs @@ -37,13 +37,14 @@ async fn test_channel_buffers(db: &Arc) { .await .unwrap() .user_id; + // This user will not be a part of the channel let c_id = db .create_user( - "user_b@example.com", + "user_c@example.com", false, NewUserParams { - github_login: "user_b".into(), + github_login: "user_c".into(), github_user_id: 102, invite_count: 0, }, @@ -64,8 +65,9 @@ async fn test_channel_buffers(db: &Arc) { .await .unwrap(); + let connection_id_a = ConnectionId { owner_id, id: 1 }; let buffer_response_a = db - .join_buffer_for_channel(zed_id, a_id, ConnectionId { owner_id, id: 1 }) + .join_channel_buffer(zed_id, a_id, connection_id_a) .await .unwrap(); let buffer_id = BufferId::from_proto(buffer_response_a.buffer_id); @@ -83,10 +85,13 @@ async fn test_channel_buffers(db: &Arc) { .map(|op| proto::serialize_operation(&language::Operation::Buffer(op))) .collect::>(); - db.update_buffer(buffer_id, &operations).await.unwrap(); + db.update_channel_buffer(buffer_id, &operations) + .await + .unwrap(); + let connection_id_b = ConnectionId { owner_id, id: 2 }; let buffer_response_b = db - .join_buffer_for_channel(zed_id, b_id, ConnectionId { owner_id, id: 2 }) + .join_channel_buffer(zed_id, b_id, connection_id_b) .await .unwrap(); @@ -106,7 +111,7 @@ async fn test_channel_buffers(db: &Arc) { // Ensure that C fails to open the buffer assert!(db - .join_buffer_for_channel(zed_id, c_id, ConnectionId { owner_id, id: 3 }) + .join_channel_buffer(zed_id, c_id, ConnectionId { owner_id, id: 3 }) .await .is_err()); @@ -127,5 +132,14 @@ async fn test_channel_buffers(db: &Arc) { ] ); - // Leave buffer + let collaborators = db + .leave_channel_buffer(zed_id, connection_id_b) + .await + .unwrap(); + + assert_eq!(collaborators, &[connection_id_a],); + + db.connection_lost(connection_id_a).await.unwrap(); + // assert!() + // Test buffer epoch incrementing? } diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index 95c6bdefc1..da5e7e6398 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -39,7 +39,7 @@ use prometheus::{register_int_gauge, IntGauge}; use rpc::{ proto::{ self, Ack, AnyTypedEnvelope, EntityMessage, EnvelopedMessage, LiveKitConnectionInfo, - OpenChannelBufferResponse, RequestMessage, + RequestMessage, }, Connection, ConnectionId, Peer, Receipt, TypedEnvelope, }; @@ -251,8 +251,8 @@ impl Server { .add_request_handler(remove_channel_member) .add_request_handler(set_channel_member_admin) .add_request_handler(rename_channel) - .add_request_handler(open_channel_buffer) - .add_request_handler(close_channel_buffer) + .add_request_handler(join_channel_buffer) + .add_request_handler(leave_channel_buffer) .add_message_handler(update_channel_buffer) .add_request_handler(get_channel_members) .add_request_handler(respond_to_channel_invite) @@ -2484,16 +2484,16 @@ async fn join_channel( Ok(()) } -async fn open_channel_buffer( - request: proto::OpenChannelBuffer, - response: Response, +async fn join_channel_buffer( + request: proto::JoinChannelBuffer, + response: Response, session: Session, ) -> Result<()> { let db = session.db().await; let channel_id = ChannelId::from_proto(request.channel_id); let open_response = db - .join_buffer_for_channel(channel_id, session.user_id, session.connection_id) + .join_channel_buffer(channel_id, session.user_id, session.connection_id) .await?; response.send(open_response)?; @@ -2501,16 +2501,18 @@ async fn open_channel_buffer( Ok(()) } -async fn close_channel_buffer( - request: proto::CloseChannelBuffer, - response: Response, +async fn leave_channel_buffer( + request: proto::LeaveChannelBuffer, + response: Response, session: Session, ) -> Result<()> { let db = session.db().await; - let buffer_id = BufferId::from_proto(request.buffer_id); + let channel_id = ChannelId::from_proto(request.channel_id); + + let collaborators_to_notify = db + .leave_channel_buffer(channel_id, session.connection_id) + .await?; - // TODO: close channel buffer here - // response.send(Ack {})?; Ok(()) diff --git a/crates/rpc/proto/zed.proto b/crates/rpc/proto/zed.proto index 6f19132dc5..88ad46abc7 100644 --- a/crates/rpc/proto/zed.proto +++ b/crates/rpc/proto/zed.proto @@ -143,10 +143,10 @@ message Envelope { SetChannelMemberAdmin set_channel_member_admin = 129; RenameChannel rename_channel = 130; - OpenChannelBuffer open_channel_buffer = 131; - OpenChannelBufferResponse open_channel_buffer_response = 132; + JoinChannelBuffer join_channel_buffer = 131; + JoinChannelBufferResponse join_channel_buffer_response = 132; UpdateChannelBuffer update_channel_buffer = 133; - CloseChannelBuffer close_channel_buffer = 134; + LeaveChannelBuffer leave_channel_buffer = 134; } } @@ -958,19 +958,19 @@ message RenameChannel { string name = 2; } -message OpenChannelBuffer { +message JoinChannelBuffer { uint64 channel_id = 1; } -message OpenChannelBufferResponse { +message JoinChannelBufferResponse { uint64 buffer_id = 1; string base_text = 2; repeated Operation operations = 3; repeated Collaborator collaborators = 4; } -message CloseChannelBuffer { - uint64 buffer_id = 1; +message LeaveChannelBuffer { + uint64 channel_id = 1; } message RespondToChannelInvite { diff --git a/crates/rpc/src/proto.rs b/crates/rpc/src/proto.rs index 9d71140aa0..68219d3ad8 100644 --- a/crates/rpc/src/proto.rs +++ b/crates/rpc/src/proto.rs @@ -249,9 +249,9 @@ messages!( (GetPrivateUserInfoResponse, Foreground), (GetChannelMembers, Foreground), (GetChannelMembersResponse, Foreground), - (OpenChannelBuffer, Foreground), - (OpenChannelBufferResponse, Foreground), - (CloseChannelBuffer, Background), + (JoinChannelBuffer, Foreground), + (JoinChannelBufferResponse, Foreground), + (LeaveChannelBuffer, Background), (UpdateChannelBuffer, Foreground) ); @@ -319,8 +319,8 @@ request_messages!( (UpdateParticipantLocation, Ack), (UpdateProject, Ack), (UpdateWorktree, Ack), - (OpenChannelBuffer, OpenChannelBufferResponse), - (CloseChannelBuffer, Ack) + (JoinChannelBuffer, JoinChannelBufferResponse), + (LeaveChannelBuffer, Ack) ); entity_messages!(