diff --git a/backend/src/api/handler.rs b/backend/src/api/handler.rs index f339ff8..dc7d1e8 100644 --- a/backend/src/api/handler.rs +++ b/backend/src/api/handler.rs @@ -218,12 +218,14 @@ pub struct ApiMessageHandler { impl ApiMessageHandler { pub fn process_forever(&mut self, settings: &mut Settings) { + let mut dirty_echo = true; // set everything twice, to make sure PowerTools wins on race conditions while let Ok(msg) = self.intake.recv() { let mut dirty = self.process(settings, msg); while let Ok(msg) = self.intake.try_recv() { dirty |= self.process(settings, msg); } - if dirty { + if dirty || dirty_echo { + dirty_echo = dirty; // echo only once // run on_set if let Err(e) = settings.on_set() { log::error!("Settings on_set() err: {}", e); diff --git a/backend/src/main.rs b/backend/src/main.rs index 0603a24..f335223 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -69,10 +69,6 @@ fn main() -> Result<(), ()> { //let (_save_handle, save_sender) = save_worker::spawn(loaded_settings.clone()); let _resume_handle = resume_worker::spawn(api_sender.clone()); - if let Err(e) = loaded_settings.on_set() { - log::error!("Startup Settings.on_set() error: {}", e); - } - let instance = Instance::new(PORT) .register("V_INFO", |_: Vec| { vec![format!("{} v{}", PACKAGE_NAME, PACKAGE_VERSION).into()] @@ -225,6 +221,12 @@ fn main() -> Result<(), ()> { ) .register("GENERAL_idk", api::general::gunter); + if let Err(e) = loaded_settings.on_set() { + log::error!("Startup Settings.on_set() error: {}", e); + } else { + log::info!("Startup Settings.on_set() success"); + } + api_worker::spawn(loaded_settings, api_handler); instance