summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-07-31 14:12:03 +0200
committeruvok2025-07-31 14:12:03 +0200
commit67cfa2dc089cfd302570d4b570e0c88cc7d2a087 (patch)
tree743c9d869bbe3a95eea84d2c85181f186cf5c331
parent765fcdfa7e932725a2a8f1b5b0b5b72f2d1ab69b (diff)
Add availability stream
-rw-r--r--lib/control/mock_scanner_controller.dart4
-rw-r--r--lib/control/scanner_controller_impl.dart12
2 files changed, 16 insertions, 0 deletions
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<void> 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<ScanAvailability> _availabilityStreamController =
StreamController<ScanAvailability>.broadcast();
+ ScanAvailability? _latestAvailability;
+
@override
Stream<ScanStatus> get statusStream => _scanStatusController.stream;
@@ -22,6 +24,15 @@ abstract class ScannerControllerImpl extends ScannerController {
Stream<ScanAvailability> 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