Add SSDP/UPnP scanner to frontend status displays

Surface the SSDP/UPnP scanner alongside ARP and mDNS: a dedicated card on
the Status screen and a row in the consolidated Status card on Home. Mirrors
the existing mDNS implementation and reuses the generic ScannerStatusCard and
PolledValue infrastructure. Also maps the 'Ssdp' device-event scanner to the
"SSDP/UPnP" label.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
rzuasti
2026-06-01 18:13:33 -04:00
co-authored by Claude Opus 4.8
parent e8159f2b40
commit 440959b10d
6 changed files with 139 additions and 2 deletions
+11
View File
@@ -8,6 +8,7 @@ import 'package:frontend/utils/backend_reachability.dart';
import 'package:frontend/utils/pref_utils.dart';
import '../model/arp_scanner_status.dart';
import '../model/mdns_scanner_status.dart';
import '../model/ssdp_scanner_status.dart';
import '../model/device.dart';
import '../model/device_event.dart';
import '../model/device_summary.dart';
@@ -311,6 +312,16 @@ class BackendAPI {
return MdnsScannerStatus.fromJson(response.data as Map<String, dynamic>);
}
Future<SsdpScannerStatus> getSsdpScannerStatus({
CancelToken? cancelToken,
}) async {
final response = await _dio.get(
'/ssdp_scanner/status',
cancelToken: cancelToken,
);
return SsdpScannerStatus.fromJson(response.data as Map<String, dynamic>);
}
Future<({List<Notification> items, bool hasNextPage})> listNotifications(
bool? isNew, {
int page = 0,