summaryrefslogtreecommitdiff
path: root/lib/control/scanner_controller_impl.dart
diff options
context:
space:
mode:
authoruvok2025-07-31 14:12:03 +0200
committeruvok2025-07-31 14:12:03 +0200
commit67cfa2dc089cfd302570d4b570e0c88cc7d2a087 (patch)
tree743c9d869bbe3a95eea84d2c85181f186cf5c331 /lib/control/scanner_controller_impl.dart
parent765fcdfa7e932725a2a8f1b5b0b5b72f2d1ab69b (diff)
Add availability stream
Diffstat (limited to 'lib/control/scanner_controller_impl.dart')
-rw-r--r--lib/control/scanner_controller_impl.dart12
1 files changed, 12 insertions, 0 deletions
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