Skip to content

Commit

Permalink
Minor cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
morosanmihail committed Jan 7, 2025
1 parent 86309fa commit 1efc244
Showing 1 changed file with 23 additions and 35 deletions.
58 changes: 23 additions & 35 deletions src/homeassistant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use eyre::{OptionExt, Result};
use futures_util::{SinkExt, StreamExt};
use reqwest::Client;
use serde::Deserialize;
use serde_json::{json, Value};
use serde_json::{json, Error, Value};
use tokio::sync::mpsc::{Receiver, Sender};
use tokio_tungstenite::{connect_async, tungstenite::protocol::Message};
use url::Url;
Expand Down Expand Up @@ -226,42 +226,30 @@ pub async fn listen_for_events(
loop {
tokio::select! {
event = read.next() => {
match event {
None => println!("Oh no, nothing here"),
Some(Ok(Message::Text(text))) => {
let event: serde_json::Value = serde_json::from_str(&text)?;
if let Some(entity_id) = event.get("event").and_then(|e| e.get("data")).and_then(|d| d.get("entity_id")).and_then(|e| e.as_str())
{
if let Some(media_player) = media_players.get_mut(entity_id) {
if let Some(new_state) = event.get("event").and_then(|e| e.get("data")).and_then(|d| d.get("new_state")) {
let attr = new_state.get("attributes");
let state = new_state.get("state");

if attr.is_some() && state.is_some() {
match media_player
.update_metadata(
attr.unwrap().clone(),
state.unwrap().to_string().clone(),
)
.await {
Ok(events) => {
for e in events {
channels
.get(entity_id)
.unwrap()
.send(e)
.await?;
}
},
Err(e) => println!("Died during metadata update event with {e}"),
};
}
}
}
let Some(Ok(Message::Text(text))) = event else { continue };
let Ok(event): Result<serde_json::Value, Error> = serde_json::from_str(&text) else { continue };
let Some(entity_id) = event.get("event").and_then(|e| e.get("data")).and_then(|d| d.get("entity_id")).and_then(|e| e.as_str()) else { continue };
let Some(media_player) = media_players.get_mut(entity_id) else { continue };
let Some(new_state) = event.get("event").and_then(|e| e.get("data")).and_then(|d| d.get("new_state")) else { continue };
let Some(attr) = new_state.get("attributes") else { continue };
let Some(state) = new_state.get("state") else { continue };
match media_player
.update_metadata(
attr.clone(),
state.to_string().clone(),
)
.await {
Ok(events) => {
for e in events {
channels
.get(entity_id)
.unwrap()
.send(e)
.await?;
}
},
_ => {},
}
Err(e) => println!("Died during metadata update event with {e}"),
};
}
Some((entity_id, msg)) = mpris_rx.recv() => {
let media = media_players.get_mut(&entity_id);
Expand Down

0 comments on commit 1efc244

Please sign in to comment.