diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index a07b33921e..319f752f8b 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -909,7 +909,7 @@ pub async fn handle_websocket_request( .into_response(); }; - if !version.is_supported() { + if !version.can_collaborate() { return ( StatusCode::UPGRADE_REQUIRED, "client must be upgraded".to_string(), @@ -1347,19 +1347,6 @@ async fn set_room_participant_role( let user_id = UserId::from_proto(request.user_id); let role = ChannelRole::from(request.role()); - if role == ChannelRole::Talker { - let pool = session.connection_pool().await; - - for connection in pool.user_connections(user_id) { - if !connection.zed_version.supports_talker_role() { - Err(anyhow!( - "This user is on zed {} which does not support unmute", - connection.zed_version - ))?; - } - } - } - let (live_kit_room, can_publish) = { let room = session .db() diff --git a/crates/collab/src/rpc/connection_pool.rs b/crates/collab/src/rpc/connection_pool.rs index acbd62c008..b90d22cb94 100644 --- a/crates/collab/src/rpc/connection_pool.rs +++ b/crates/collab/src/rpc/connection_pool.rs @@ -4,7 +4,7 @@ use collections::{BTreeMap, HashMap, HashSet}; use rpc::ConnectionId; use serde::Serialize; use tracing::instrument; -use util::SemanticVersion; +use util::{semver, SemanticVersion}; #[derive(Default, Serialize)] pub struct ConnectionPool { @@ -29,11 +29,8 @@ impl fmt::Display for ZedVersion { } impl ZedVersion { - pub fn is_supported(&self) -> bool { - self.0 != SemanticVersion::new(0, 123, 0) - } - pub fn supports_talker_role(&self) -> bool { - self.0 >= SemanticVersion::new(0, 125, 0) + pub fn can_collaborate(&self) -> bool { + self.0 >= semver(0, 127, 3) || (self.0 >= semver(0, 126, 3) && self.0 < semver(0, 127, 0)) } } diff --git a/crates/util/src/semantic_version.rs b/crates/util/src/semantic_version.rs index 851bedc7aa..2d149f1d54 100644 --- a/crates/util/src/semantic_version.rs +++ b/crates/util/src/semantic_version.rs @@ -14,6 +14,14 @@ pub struct SemanticVersion { pub patch: usize, } +pub fn semver(major: usize, minor: usize, patch: usize) -> SemanticVersion { + SemanticVersion { + major, + minor, + patch, + } +} + impl SemanticVersion { pub fn new(major: usize, minor: usize, patch: usize) -> Self { Self { diff --git a/crates/util/src/util.rs b/crates/util/src/util.rs index 85e55395bc..76dc47202d 100644 --- a/crates/util/src/util.rs +++ b/crates/util/src/util.rs @@ -10,7 +10,7 @@ pub mod test; use futures::Future; use lazy_static::lazy_static; use rand::{seq::SliceRandom, Rng}; -pub use semantic_version::SemanticVersion; +pub use semantic_version::*; use std::{ borrow::Cow, cmp::{self, Ordering},