From 180497d54d72528c3410f8d766f3577a76111bb5 Mon Sep 17 00:00:00 2001 From: uncor3 Date: Tue, 10 Feb 2026 21:11:22 +0000 Subject: [PATCH] refactor: update deviceRemoved signal to use MAC address instead of device name --- src/core/services/avahi/avahi_service.cpp | 7 ++++--- src/core/services/avahi/avahi_service.h | 2 +- src/core/services/dnssd/dnssd_service.cpp | 10 +++++----- src/core/services/dnssd/dnssd_service.h | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/core/services/avahi/avahi_service.cpp b/src/core/services/avahi/avahi_service.cpp index dda167c..2215df4 100644 --- a/src/core/services/avahi/avahi_service.cpp +++ b/src/core/services/avahi/avahi_service.cpp @@ -144,6 +144,7 @@ void AvahiService::browseCallback(AvahiServiceBrowser *browser, Q_UNUSED(flags) AvahiService *service = static_cast(userdata); + QString macAddress = QString::fromUtf8(name).split('@').first(); switch (event) { case AVAHI_BROWSER_NEW: @@ -157,14 +158,14 @@ void AvahiService::browseCallback(AvahiServiceBrowser *browser, case AVAHI_BROWSER_REMOVE: qDebug() << "Apple device removed:" << name; - emit service->deviceRemoved(QString::fromUtf8(name)); + emit service->deviceRemoved(macAddress); // Remove from our list { QMutexLocker locker(&service->m_devicesMutex); service->m_networkDevices.removeIf( - [name](const NetworkDevice &dev) { - return dev.name == QString::fromUtf8(name); + [macAddress](const NetworkDevice &dev) { + return dev.macAddress == macAddress; }); } break; diff --git a/src/core/services/avahi/avahi_service.h b/src/core/services/avahi/avahi_service.h index 4a4f37a..9fe8e6e 100644 --- a/src/core/services/avahi/avahi_service.h +++ b/src/core/services/avahi/avahi_service.h @@ -48,7 +48,7 @@ public: signals: void deviceAdded(const NetworkDevice &device); - void deviceRemoved(const QString &deviceName); + void deviceRemoved(const QString &macAddress); private slots: void pollAvahi(); diff --git a/src/core/services/dnssd/dnssd_service.cpp b/src/core/services/dnssd/dnssd_service.cpp index 1d615f3..cdc00fd 100644 --- a/src/core/services/dnssd/dnssd_service.cpp +++ b/src/core/services/dnssd/dnssd_service.cpp @@ -140,16 +140,16 @@ void DNSSD_API DnssdService::browseCallback( DNSServiceRefDeallocate(resolveRef); } } else { - qDebug() << "Apple device removed:" << serviceName; - emit service->deviceRemoved(QString::fromUtf8(serviceName)); + QString macAddress = QString::fromUtf8(serviceName).split('@').first(); + emit service->deviceRemoved(macAddress); // Remove from our list QMutexLocker locker(&service->m_devicesMutex); service->m_networkDevices.removeIf( - [serviceName](const NetworkDevice &dev) { - return dev.name == QString::fromUtf8(serviceName); + [macAddress](const NetworkDevice &dev) { + return dev.macAddress == macAddress; }); - service->m_pendingDevices.remove(QString::fromUtf8(serviceName)); + service->m_pendingDevices.remove(macAddress); } } diff --git a/src/core/services/dnssd/dnssd_service.h b/src/core/services/dnssd/dnssd_service.h index 0818bba..fc1b1e9 100644 --- a/src/core/services/dnssd/dnssd_service.h +++ b/src/core/services/dnssd/dnssd_service.h @@ -50,7 +50,7 @@ public: signals: void deviceAdded(const NetworkDevice &device); - void deviceRemoved(const QString &deviceName); + void deviceRemoved(const QString &macAddress); private slots: void processDnssdEvents();