diff --git a/crates/collab/src/db/queries/channels.rs b/crates/collab/src/db/queries/channels.rs index 09ddd3746e1b286b56bdf736e9f3db454dad8e44..1023b1b7c30a869a527bd33075481895f9e3ca86 100644 --- a/crates/collab/src/db/queries/channels.rs +++ b/crates/collab/src/db/queries/channels.rs @@ -103,7 +103,6 @@ impl Database { channel_id: ChannelId, user_id: UserId, connection: ConnectionId, - environment: &str, ) -> Result<(JoinRoom, Option, ChannelRole)> { self.transaction(move |tx| async move { let channel = self.get_channel_internal(channel_id, &*tx).await?; @@ -163,7 +162,7 @@ impl Database { let live_kit_room = format!("channel-{}", nanoid::nanoid!(30)); let room_id = self - .get_or_create_channel_room(channel_id, &live_kit_room, environment, &*tx) + .get_or_create_channel_room(channel_id, &live_kit_room, &*tx) .await?; self.join_channel_room_internal(room_id, user_id, connection, role, &*tx) @@ -933,7 +932,6 @@ impl Database { &self, channel_id: ChannelId, live_kit_room: &str, - environment: &str, tx: &DatabaseTransaction, ) -> Result { let room = room::Entity::find() @@ -942,19 +940,11 @@ impl Database { .await?; let room_id = if let Some(room) = room { - if let Some(env) = room.environment { - if &env != environment { - Err(ErrorCode::WrongReleaseChannel - .with_tag("required", &env) - .anyhow())?; - } - } room.id } else { let result = room::Entity::insert(room::ActiveModel { channel_id: ActiveValue::Set(Some(channel_id)), live_kit_room: ActiveValue::Set(live_kit_room.to_string()), - environment: ActiveValue::Set(Some(environment.to_string())), ..Default::default() }) .exec(&*tx) diff --git a/crates/collab/src/db/queries/rooms.rs b/crates/collab/src/db/queries/rooms.rs index f8afbeab38130cf75eca4c856d120cbf61be460c..275e75ff112c8f7ec516e743e871a74a309a20b2 100644 --- a/crates/collab/src/db/queries/rooms.rs +++ b/crates/collab/src/db/queries/rooms.rs @@ -110,12 +110,10 @@ impl Database { user_id: UserId, connection: ConnectionId, live_kit_room: &str, - release_channel: &str, ) -> Result { self.transaction(|tx| async move { let room = room::ActiveModel { live_kit_room: ActiveValue::set(live_kit_room.into()), - environment: ActiveValue::set(Some(release_channel.to_string())), ..Default::default() } .insert(&*tx) @@ -302,31 +300,21 @@ impl Database { room_id: RoomId, user_id: UserId, connection: ConnectionId, - environment: &str, ) -> Result> { self.room_transaction(room_id, |tx| async move { #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] - enum QueryChannelIdAndEnvironment { + enum QueryChannelId { ChannelId, - Environment, } - let (channel_id, release_channel): (Option, Option) = - room::Entity::find() - .select_only() - .column(room::Column::ChannelId) - .column(room::Column::Environment) - .filter(room::Column::Id.eq(room_id)) - .into_values::<_, QueryChannelIdAndEnvironment>() - .one(&*tx) - .await? - .ok_or_else(|| anyhow!("no such room"))?; - - if let Some(release_channel) = release_channel { - if &release_channel != environment { - Err(anyhow!("must join using the {} release", release_channel))?; - } - } + let channel_id: Option = room::Entity::find() + .select_only() + .column(room::Column::ChannelId) + .filter(room::Column::Id.eq(room_id)) + .into_values::<_, QueryChannelId>() + .one(&*tx) + .await? + .ok_or_else(|| anyhow!("no such room"))?; if channel_id.is_some() { Err(anyhow!("tried to join channel call directly"))? diff --git a/crates/collab/src/db/tables/room.rs b/crates/collab/src/db/tables/room.rs index f75a079317311f3595279d46b41234103afc1294..f72f7000a783570d2cac4f6aebc3cf68846ab3a3 100644 --- a/crates/collab/src/db/tables/room.rs +++ b/crates/collab/src/db/tables/room.rs @@ -8,7 +8,6 @@ pub struct Model { pub id: RoomId, pub live_kit_room: String, pub channel_id: Option, - pub environment: Option, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] diff --git a/crates/collab/src/db/tests.rs b/crates/collab/src/db/tests.rs index a47e6330d3916b9939459e132490764650934a35..a85aae4fa348b13b9780c4381a6c00b7cf69afa0 100644 --- a/crates/collab/src/db/tests.rs +++ b/crates/collab/src/db/tests.rs @@ -15,8 +15,6 @@ use std::sync::{ Arc, }; -const TEST_RELEASE_CHANNEL: &'static str = "test"; - pub struct TestDb { pub db: Option>, pub connection: Option, diff --git a/crates/collab/src/db/tests/channel_tests.rs b/crates/collab/src/db/tests/channel_tests.rs index a5e083f9356c5e144cc5239b9552ac3c8e58e675..7f74bf15aa5fd70c13b4f22d6facbf0e7c3f768b 100644 --- a/crates/collab/src/db/tests/channel_tests.rs +++ b/crates/collab/src/db/tests/channel_tests.rs @@ -1,6 +1,6 @@ use crate::{ db::{ - tests::{channel_tree, new_test_connection, new_test_user, TEST_RELEASE_CHANNEL}, + tests::{channel_tree, new_test_connection, new_test_user}, Channel, ChannelId, ChannelRole, Database, NewUserParams, RoomId, }, test_both_dbs, @@ -135,12 +135,7 @@ async fn test_joining_channels(db: &Arc) { // can join a room with membership to its channel let (joined_room, _, _) = db - .join_channel( - channel_1, - user_1, - ConnectionId { owner_id, id: 1 }, - TEST_RELEASE_CHANNEL, - ) + .join_channel(channel_1, user_1, ConnectionId { owner_id, id: 1 }) .await .unwrap(); assert_eq!(joined_room.room.participants.len(), 1); @@ -149,12 +144,7 @@ async fn test_joining_channels(db: &Arc) { drop(joined_room); // cannot join a room without membership to its channel assert!(db - .join_room( - room_id, - user_2, - ConnectionId { owner_id, id: 1 }, - TEST_RELEASE_CHANNEL - ) + .join_room(room_id, user_2, ConnectionId { owner_id, id: 1 },) .await .is_err()); } @@ -732,7 +722,7 @@ async fn test_guest_access(db: &Arc) { .await .is_err()); - db.join_channel(zed_channel, guest, guest_connection, TEST_RELEASE_CHANNEL) + db.join_channel(zed_channel, guest, guest_connection) .await .unwrap(); diff --git a/crates/collab/src/db/tests/db_tests.rs b/crates/collab/src/db/tests/db_tests.rs index a76e33402a86942e5d46e5af20ba5962d7c076e2..3149c8a8b67de0580c906d902c92d7b32be2dbca 100644 --- a/crates/collab/src/db/tests/db_tests.rs +++ b/crates/collab/src/db/tests/db_tests.rs @@ -517,7 +517,7 @@ async fn test_project_count(db: &Arc) { .unwrap(); let room_id = RoomId::from_proto( - db.create_room(user1.user_id, ConnectionId { owner_id, id: 0 }, "", "test") + db.create_room(user1.user_id, ConnectionId { owner_id, id: 0 }, "") .await .unwrap() .id, @@ -531,14 +531,9 @@ async fn test_project_count(db: &Arc) { ) .await .unwrap(); - db.join_room( - room_id, - user2.user_id, - ConnectionId { owner_id, id: 1 }, - "test", - ) - .await - .unwrap(); + db.join_room(room_id, user2.user_id, ConnectionId { owner_id, id: 1 }) + .await + .unwrap(); assert_eq!(db.project_count_excluding_admins().await.unwrap(), 0); db.share_project(room_id, ConnectionId { owner_id, id: 1 }, &[]) @@ -616,80 +611,3 @@ async fn test_fuzzy_search_users(cx: &mut TestAppContext) { .collect::>() } } - -test_both_dbs!( - test_non_matching_release_channels, - test_non_matching_release_channels_postgres, - test_non_matching_release_channels_sqlite -); - -async fn test_non_matching_release_channels(db: &Arc) { - let owner_id = db.create_server("test").await.unwrap().0 as u32; - - let user1 = db - .create_user( - &format!("admin@example.com"), - true, - NewUserParams { - github_login: "admin".into(), - github_user_id: 0, - }, - ) - .await - .unwrap(); - let user2 = db - .create_user( - &format!("user@example.com"), - false, - NewUserParams { - github_login: "user".into(), - github_user_id: 1, - }, - ) - .await - .unwrap(); - - let room = db - .create_room( - user1.user_id, - ConnectionId { owner_id, id: 0 }, - "", - "stable", - ) - .await - .unwrap(); - - db.call( - RoomId::from_proto(room.id), - user1.user_id, - ConnectionId { owner_id, id: 0 }, - user2.user_id, - None, - ) - .await - .unwrap(); - - // User attempts to join from preview - let result = db - .join_room( - RoomId::from_proto(room.id), - user2.user_id, - ConnectionId { owner_id, id: 1 }, - "preview", - ) - .await; - - assert!(result.is_err()); - - // User switches to stable - let result = db - .join_room( - RoomId::from_proto(room.id), - user2.user_id, - ConnectionId { owner_id, id: 1 }, - "stable", - ) - .await; - - assert!(result.is_ok()) -} diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index de1caf29b7f86a3e53673779b73ce726226f296f..454ef344257ce78956c672a473a4273b4cd98a43 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -102,7 +102,6 @@ impl Response { #[derive(Clone)] struct Session { - zed_environment: Arc, user_id: UserId, connection_id: ConnectionId, db: Arc>, @@ -617,7 +616,6 @@ impl Server { user_id, connection_id, db: Arc::new(tokio::sync::Mutex::new(DbHandle(this.app_state.db.clone()))), - zed_environment: this.app_state.config.zed_environment.clone(), peer: this.peer.clone(), connection_pool: this.connection_pool.clone(), live_kit_client: this.app_state.live_kit_client.clone(), @@ -1009,12 +1007,7 @@ async fn create_room( let room = session .db() .await - .create_room( - session.user_id, - session.connection_id, - &live_kit_room, - &session.zed_environment, - ) + .create_room(session.user_id, session.connection_id, &live_kit_room) .await?; response.send(proto::CreateRoomResponse { @@ -1044,12 +1037,7 @@ async fn join_room( let room = session .db() .await - .join_room( - room_id, - session.user_id, - session.connection_id, - session.zed_environment.as_ref(), - ) + .join_room(room_id, session.user_id, session.connection_id) .await?; room_updated(&room.room, &session.peer); room.into_inner() @@ -2734,12 +2722,7 @@ async fn join_channel_internal( let db = session.db().await; let (joined_room, membership_updated, role) = db - .join_channel( - channel_id, - session.user_id, - session.connection_id, - session.zed_environment.as_ref(), - ) + .join_channel(channel_id, session.user_id, session.connection_id) .await?; let live_kit_connection_info = session.live_kit_client.as_ref().and_then(|live_kit| { diff --git a/crates/rpc/proto/zed.proto b/crates/rpc/proto/zed.proto index c60d3ae0d1770051d59bea16ba6716642101f591..b6b9ace1b66c9c079cd206b099c0b6f0e49f39e8 100644 --- a/crates/rpc/proto/zed.proto +++ b/crates/rpc/proto/zed.proto @@ -212,13 +212,13 @@ enum ErrorCode { SignedOut = 3; UpgradeRequired = 4; Forbidden = 5; - WrongReleaseChannel = 6; NeedsCla = 7; NotARootChannel = 8; BadPublicNesting = 9; CircularNesting = 10; WrongMoveTarget = 11; UnsharedItem = 12; + reserved 6; } message Test { diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 335317711790086c99784f4488f9d6674affd459..7ebf03c488dca6e63d553f8d9c5be6a992de4fed 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -4201,7 +4201,6 @@ pub fn join_channel( "This channel is private, and you do not have access. Please ask someone to add you and try again.".into() }, ErrorCode::Disconnected => "Please check your internet connection and try again.".into(), - ErrorCode::WrongReleaseChannel => format!("Others in the channel are using the {} release of Zed. Please switch to join this call.", err.error_tag("required").unwrap_or("other")).into(), _ => format!("{}\n\nPlease try again.", err).into(), }; cx.prompt(