From c6d63f0b5c231bfc42128a670923a660fabd1835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 7 Jun 2021 17:58:06 +0200 Subject: default send message to current channel if no channel specified --- mumd/src/state.rs | 22 +++++++++++++++++----- mumd/src/state/server.rs | 6 ++++++ 2 files changed, 23 insertions(+), 5 deletions(-) (limited to 'mumd/src') diff --git a/mumd/src/state.rs b/mumd/src/state.rs index 84583e0..a57b53d 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -687,14 +687,26 @@ pub fn handle_command( for target in targets { match target { + MessageTarget::CurrentChannel { recursive } => { + let channel_id = match state.server().unwrap().current_channel() { + Some(channel)=> channel.0, + None => return now!(Err(Error::NotConnectedToChannel)), + }; + + if recursive { + msg.mut_tree_id() + } else { + msg.mut_channel_id() + } + .push(channel_id); + } MessageTarget::Channel { recursive, name } => { - let channel_id = state.server().unwrap().channel_name(&name); + let channel = state.server().unwrap().channel_name(&name); - let channel_id = match channel_id { - Ok(id) => id, + let channel_id = match channel { + Ok(channel) => channel.0, Err(e) => return now!(Err(Error::ChannelIdentifierError(name, e))), - } - .0; + }; if recursive { msg.mut_tree_id() diff --git a/mumd/src/state/server.rs b/mumd/src/state/server.rs index 869940a..58c614c 100644 --- a/mumd/src/state/server.rs +++ b/mumd/src/state/server.rs @@ -132,6 +132,12 @@ impl Server { }) } + pub fn current_channel(&self) -> Option<(u32, &Channel)> { + let channel_id = self.users().get(&self.session_id()?)?.channel(); + let channel = self.channels().get(&channel_id)?; + Some((channel_id, channel)) + } + pub fn host_mut(&mut self) -> &mut Option { &mut self.host } -- cgit v1.2.1