From 3ffb668e6b82efee0bc3b88321364cb824e72c8f Mon Sep 17 00:00:00 2001 From: Reinout Meliesie Date: Tue, 2 Sep 2025 23:23:44 +0200 Subject: [PATCH] refactor(networkmanager): pass device proxy directly to device state watcher Also clarify what receiver we're dealing with in handle_update_events. --- src/clients/networkmanager/mod.rs | 16 ++++------------ src/modules/networkmanager.rs | 4 ++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/clients/networkmanager/mod.rs b/src/clients/networkmanager/mod.rs index d3b02fe..2490b0a 100644 --- a/src/clients/networkmanager/mod.rs +++ b/src/clients/networkmanager/mod.rs @@ -5,7 +5,7 @@ use std::collections::HashSet; use std::sync::Arc; use tokio::sync::{Mutex, broadcast}; use zbus::Connection; -use zbus::zvariant::{ObjectPath, Str}; +use zbus::zvariant::ObjectPath; use crate::clients::ClientResult; use crate::clients::networkmanager::dbus::{DbusProxy, DeviceDbusProxy}; @@ -141,24 +141,16 @@ async fn watch_device( let dbus_connection = Connection::system().await?; let device = DeviceDbusProxy::new(&dbus_connection, device_path.to_owned()).await?; - let interface = device.interface().await?; - - spawn(watch_device_state( - device_path.to_owned(), - interface.to_owned(), - controller_sender.clone(), - )); + spawn(watch_device_state(device, controller_sender)); Ok(()) } async fn watch_device_state( - device_path: ObjectPath<'_>, - interface: Str<'_>, + device: DeviceDbusProxy<'_>, controller_sender: broadcast::Sender, ) -> Result<()> { - let dbus_connection = Connection::system().await?; - let device = DeviceDbusProxy::new(&dbus_connection, &device_path).await?; + let interface = device.interface().await?; let r#type = device.device_type().await?; // Send an event communicating the initial state diff --git a/src/modules/networkmanager.rs b/src/modules/networkmanager.rs index 01e99ca..2ee5e9c 100644 --- a/src/modules/networkmanager.rs +++ b/src/modules/networkmanager.rs @@ -84,7 +84,7 @@ impl Module for NetworkManagerModule { } async fn handle_update_events( - mut receiver: broadcast::Receiver, + mut widget_receiver: broadcast::Receiver, container: gtk::Box, icon_size: i32, image_provider: Provider, @@ -92,7 +92,7 @@ async fn handle_update_events( // TODO: Ensure the visible icons are always in the same order let mut icons = HashMap::::new(); - while let Result::Ok(event) = receiver.recv().await { + while let Result::Ok(event) = widget_receiver.recv().await { match event { ClientToModuleEvent::DeviceChanged { interface,