1786925015

This commit is contained in:
2026-08-17 02:03:35 +02:00
parent eca5691db2
commit 3ffef288c0
5 changed files with 17 additions and 9 deletions

View File

@@ -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();

View File

@@ -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),

View File

@@ -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();
}
});

View File

@@ -18,4 +18,5 @@ pub enum EventMessage {
EntityRemoved(HassEntity),
CalendarUpdated(Vec<CalendarEvent>),
Battery(RawBatteryData),
NoBattery,
}

View File

@@ -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);
}
}
}
}
}