summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/data.dart13
-rw-r--r--lib/ui.dart2
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/data.dart b/lib/data.dart
index 89d8760..415e61e 100644
--- a/lib/data.dart
+++ b/lib/data.dart
@@ -21,11 +21,14 @@ class AppState with ChangeNotifier {
MachineState.init: <MachineEvent, MachineState> {
MachineEvent.connect: MachineState.disconnected,
},
+ MachineState.disconnected: <MachineEvent, MachineState> {
+ MachineEvent.disconnect: MachineState.init,
+ },
};
MachineState state = MachineState.init;
Map<String, bool> contacts = <String, bool>{};
- late final MqttServerClient _client;
+ late MqttServerClient _client;
bool _brokerConnected = false;
bool get brokerConnected => _brokerConnected;
bool _serverConnected = false;
@@ -54,6 +57,10 @@ class AppState with ChangeNotifier {
_initMqtt();
}
+ if (nextState == MachineState.init) {
+ _deinitMqtt();
+ }
+
state = nextState;
notifyListeners();
}
@@ -91,6 +98,10 @@ class AppState with ChangeNotifier {
_client.updates?.listen(_onMessage);
}
+ void _deinitMqtt() {
+ _client.disconnect();
+ }
+
void _onConnected() {
_client.subscribe('$topicPrefix/contact/+/state', MqttQos.exactlyOnce);
_client.subscribe('$topicPrefix/server/health', MqttQos.exactlyOnce);
diff --git a/lib/ui.dart b/lib/ui.dart
index 1d2ad53..e14895b 100644
--- a/lib/ui.dart
+++ b/lib/ui.dart
@@ -113,7 +113,7 @@ class ConnectionStatus extends StatelessWidget {
}
MachineEvent event = MachineEvent.disconnect;
- String action = '(disabled)';
+ String action = 'disconnect';
if (state.state == MachineState.init) {
event = MachineEvent.connect;
action = 'connect';