From 1dc47d1991910d95b4472ed3e415adb0d46a6617 Mon Sep 17 00:00:00 2001 From: xengineering Date: Fri, 16 Jan 2026 21:49:22 +0100 Subject: Display MQTT connection status The user otherwise cannot trust the state of the contacts because the app could just be disconnected from the broker. --- lib/data.dart | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib/data.dart') diff --git a/lib/data.dart b/lib/data.dart index 08f8881..f5a24e8 100644 --- a/lib/data.dart +++ b/lib/data.dart @@ -10,8 +10,9 @@ const String topicPrefix = 'sia'; class AppState with ChangeNotifier { Map contacts = {}; - late final MqttServerClient _client; + bool _brokerConnected = false; + bool get brokerConnected => _brokerConnected; AppState() { _initMqtt(); @@ -31,9 +32,11 @@ class AppState with ChangeNotifier { _client.port = brokerPort; _client.keepAlivePeriod = 2; + _client.disconnectOnNoResponsePeriod = 1; _client.logging(on: false); _client.onConnected = _onConnected; + _client.onDisconnected = _onDisconnected; try { await _client.connect(); @@ -47,6 +50,13 @@ class AppState with ChangeNotifier { void _onConnected() { _client.subscribe('$topicPrefix/contact/+/state', MqttQos.exactlyOnce); + _brokerConnected = true; + notifyListeners(); + } + + void _onDisconnected() { + _brokerConnected = false; + notifyListeners(); } void _onMessage(List> messages) { -- cgit v1.2.3-70-g09d2