aboutsummaryrefslogtreecommitdiffstats
path: root/mumd
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-06-07 17:58:06 +0200
committerGustav Sörnäs <gustav@sornas.net>2021-06-07 17:58:06 +0200
commitc6d63f0b5c231bfc42128a670923a660fabd1835 (patch)
tree44af7c6c6937eda97a3f8bafb575b9d763d36aa3 /mumd
parentbe76c2aa51733a0cf495e92659fbcbe527f41149 (diff)
downloadmum-c6d63f0b5c231bfc42128a670923a660fabd1835.tar.gz
default send message to current channel if no channel specified
Diffstat (limited to 'mumd')
-rw-r--r--mumd/src/state.rs22
-rw-r--r--mumd/src/state/server.rs6
2 files changed, 23 insertions, 5 deletions
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<String> {
&mut self.host
}