From 5486dfce6884f12b4f16ed011876407e9462bdb7 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Wed, 26 Aug 2026 12:37:11 +0200 Subject: [PATCH] JoinVoice events --- src/protocol/mod.rs | 25 +++++++++++++++++++++++++ src/server.rs | 2 ++ 2 files changed, 27 insertions(+) diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index d526c29..a6e2504 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -43,6 +43,11 @@ pub enum ClientMethod { channel_id: String, message_id: String, }, + + JoinVoice { + channel_id: String, + pin: u64, + }, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -87,6 +92,10 @@ pub enum ServerMethod { message_id: String, channel_id: String, }, + + JoinVoice { + channel_id: String, + }, } pub async fn read_loop( @@ -152,6 +161,22 @@ pub async fn read_loop( ServerMethod::GetUsers { pubkeys } => { user::get_users(server, verifying_key, socket, pubkeys).await?; } + + ServerMethod::JoinVoice { channel_id } => { + let pin = rand::random(); + + server + .voice_pins + .lock() + .await + .insert(pin, (verifying_key, channel_id.clone())); + + send_socket( + &mut *socket.lock().await, + &ClientMethod::JoinVoice { channel_id, pin }, + ) + .await?; + } } socket_lock = socket.lock().await; diff --git a/src/server.rs b/src/server.rs index 2f20ec4..2dce567 100644 --- a/src/server.rs +++ b/src/server.rs @@ -28,6 +28,7 @@ pub struct Server { pub key: SigningKey, pub config: Config, pub clients: Mutex>>, + pub voice_pins: Mutex>, pub message_store: MessageStore, pub user_store: UserMetaStore, } @@ -38,6 +39,7 @@ impl Server { key: crate::crypto::get().await?, config: Config::get().await?, clients: Mutex::new(HashMap::new()), + voice_pins: Mutex::new(HashMap::new()), message_store: MessageStore::new(PathBuf::from("messages"))?, user_store: UserMetaStore::new(PathBuf::from("users.db"))?, }))