summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/main.rs b/src/main.rs
index 5dc84eb..29df56d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -35,9 +35,8 @@ async fn main() {
.json::<PrusaStatus>()
.await?;
let mut lock = state_clone.lock().await;
- lock.entry(name.clone())
- .and_modify(|prs| *prs = extract_status_from_prusa(&response))
- .or_insert_with(|| { extract_status_from_prusa(&response) } );
+ let entry = lock.entry(name.clone()).or_default();
+ extract_status_from_prusa(&response, entry);
Ok(())
}
.await;
@@ -81,16 +80,15 @@ async fn main() {
if let Event::Incoming(Packet::Publish(p)) = notification {
let mut lock = state_clone.lock().await;
println!("{:?}", &p.payload);
- if let Ok(msg) =
- serde_json::from_slice::<BambuMessage>(&p.payload)
- {
- lock.entry(name.clone())
- .and_modify(|prs| prs.bed_temp = msg.print.bed_temper)
- .or_insert_with(|| PrinterState {
- bed_temp: msg.print.bed_temper,
- ..Default::default()
- });
- println!("Updated state for {}: {:?}", &name, p.payload);
+ match serde_json::from_slice::<BambuStatus>(&p.payload) {
+ Ok(msg) => {
+ let entry = lock.entry(name.clone()).or_default();
+ extract_status_from_bambu(&msg, entry);
+ println!("Updated state for {}: {:?}", &name, p.payload);
+ }
+ Err(e) => {
+ eprintln!("Failed to deserialize BambuStatus: {}", e);
+ }
}
}
}