From 19267cb7ac28ce51674baa9516ebb36074709d4f Mon Sep 17 00:00:00 2001 From: Eskil Queseth Date: Tue, 18 May 2021 02:36:47 +0200 Subject: add ability for backend to keep track of messages --- mumd/src/state.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'mumd/src/state.rs') diff --git a/mumd/src/state.rs b/mumd/src/state.rs index 45e7301..0f608d7 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -59,6 +59,7 @@ pub struct State { server: Option, audio_input: AudioInput, audio_output: AudioOutput, + message_buffer: Vec<(String, u32)>, phase_watcher: (watch::Sender, watch::Receiver), } @@ -79,6 +80,7 @@ impl State { server: None, audio_input, audio_output, + message_buffer: Vec::new(), phase_watcher, }; state.reload_config(); @@ -426,6 +428,16 @@ impl State { self.audio_output.set_user_volume(user_id, volume); now!(Ok(None)) } + Command::PastMessages => { + let server = match self.server.as_ref() { + Some(s) => s, + None => return now!(Err(Error::Disconnected)), + }; + let messages = std::mem::take(&mut self.message_buffer).into_iter() + .map(|(msg, user)| (msg, server.users().get(&user).unwrap().name().to_string())).collect(); + + now!(Ok(Some(CommandResponse::PastMessages { messages }))) + } } } @@ -590,6 +602,10 @@ impl State { self.audio_output.load_sound_effects(sound_effects); } } + + pub fn register_message(&mut self, msg: (String, u32)) { + self.message_buffer.push(msg); + } pub fn broadcast_phase(&self, phase: StatePhase) { self.phase_watcher @@ -609,12 +625,6 @@ impl State { pub fn audio_output(&self) -> &AudioOutput { &self.audio_output } - pub fn audio_input_mut(&mut self) -> &mut AudioInput { - &mut self.audio_input - } - pub fn audio_output_mut(&mut self) -> &mut AudioOutput { - &mut self.audio_output - } pub fn phase_receiver(&self) -> watch::Receiver { self.phase_watcher.1.clone() } -- cgit v1.2.1