1786925015
This commit is contained in:
@@ -46,10 +46,10 @@ impl From<&Battery> for RawBatteryData {
|
||||
pub async fn battery_listener(s2c_tx: UnboundedSender<EventMessage>) -> Result<(), AppError> {
|
||||
let manager = ::battery::Manager::new()?;
|
||||
|
||||
let mut battery = manager
|
||||
.batteries()?
|
||||
.next()
|
||||
.ok_or_else(|| AppError::NoBattery)??;
|
||||
let Some(Ok(mut battery)) = manager.batteries()?.next() else {
|
||||
s2c_tx.send(EventMessage::NoBattery).ok();
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
tokio::spawn({
|
||||
let s2c_tx = s2c_tx.clone();
|
||||
|
||||
@@ -12,9 +12,6 @@ pub enum AppError {
|
||||
#[error("Unsupported HASS_URL scheme: {0}")]
|
||||
InvalidScheme(String),
|
||||
|
||||
#[error("No battery found")]
|
||||
NoBattery,
|
||||
|
||||
#[error(transparent)]
|
||||
SlintPlatform(#[from] slint::PlatformError),
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ async fn main() -> Result<(), AppError> {
|
||||
tokio::spawn({
|
||||
let s2c_tx = s2c_tx.clone();
|
||||
async move {
|
||||
battery::battery_listener(s2c_tx).await.unwrap();
|
||||
battery::battery_listener(s2c_tx).await.ok();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -18,4 +18,5 @@ pub enum EventMessage {
|
||||
EntityRemoved(HassEntity),
|
||||
CalendarUpdated(Vec<CalendarEvent>),
|
||||
Battery(RawBatteryData),
|
||||
NoBattery,
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ use crate::{
|
||||
|
||||
use hass_rs::HassEntity;
|
||||
use paste::paste;
|
||||
use slint::{Model, ModelRc, VecModel, Weak, language::ColorScheme};
|
||||
use slint::{Model, ModelRc, ToSharedString, VecModel, Weak, language::ColorScheme};
|
||||
use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender};
|
||||
|
||||
macro_rules! apply_model {
|
||||
@@ -201,6 +201,16 @@ pub async fn update_listener(
|
||||
EventMessage::Battery(batt) => {
|
||||
apply_battery(&app_weak, batt);
|
||||
}
|
||||
EventMessage::NoBattery => {
|
||||
if let Err(err) = app_weak.upgrade_in_event_loop(move |app| {
|
||||
app.set_battery(BatteryData {
|
||||
state: "No Battery".to_shared_string(),
|
||||
percent: 0.,
|
||||
});
|
||||
}) {
|
||||
eprintln!("Failed to upgrade in event loop.\n\t{:?}", err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user