From 67cfa2dc089cfd302570d4b570e0c88cc7d2a087 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 31 Jul 2025 14:12:03 +0200 Subject: Add availability stream --- lib/control/mock_scanner_controller.dart | 4 ++++ lib/control/scanner_controller_impl.dart | 12 ++++++++++++ 2 files changed, 16 insertions(+) (limited to 'lib/control') diff --git a/lib/control/mock_scanner_controller.dart b/lib/control/mock_scanner_controller.dart index 3141abc..8e95e29 100644 --- a/lib/control/mock_scanner_controller.dart +++ b/lib/control/mock_scanner_controller.dart @@ -14,6 +14,10 @@ class MockScannerController extends ScannerControllerImpl { bool _isScanning = false; + MockScannerController() { + super.setAvailability(ScanAvailability.available); + } + @override Future startScan({ Duration timeout = const Duration(seconds: 2), diff --git a/lib/control/scanner_controller_impl.dart b/lib/control/scanner_controller_impl.dart index e60aec3..ac1c28c 100644 --- a/lib/control/scanner_controller_impl.dart +++ b/lib/control/scanner_controller_impl.dart @@ -12,6 +12,8 @@ abstract class ScannerControllerImpl extends ScannerController { final StreamController _availabilityStreamController = StreamController.broadcast(); + ScanAvailability? _latestAvailability; + @override Stream get statusStream => _scanStatusController.stream; @@ -22,6 +24,15 @@ abstract class ScannerControllerImpl extends ScannerController { Stream get availabilityStream => _availabilityStreamController.stream; + ScannerControllerImpl() { + // fucking broadcast streams not even caching one value... + _availabilityStreamController.onListen = () { + if (_latestAvailability != null) { + _availabilityStreamController.add(_latestAvailability!); + } + }; + } + @protected void setStatus(ScanStatus newStatus) { if (_scanStatusController.isClosed) return; @@ -39,6 +50,7 @@ abstract class ScannerControllerImpl extends ScannerController { @protected void setAvailability(ScanAvailability available) { _availabilityStreamController.add(available); + _latestAvailability = available; } @override -- cgit v1.2.3