summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/data.dart50
1 files changed, 26 insertions, 24 deletions
diff --git a/lib/data.dart b/lib/data.dart
index 4962a50..201550e 100644
--- a/lib/data.dart
+++ b/lib/data.dart
@@ -161,36 +161,38 @@ class AppState with ChangeNotifier {
void _onMessage(List<MqttReceivedMessage<MqttMessage>> messages) {
for (final MqttReceivedMessage<MqttMessage> message in messages) {
- final String topic = message.topic;
+ final List<String> parts = message.topic.split('/');
+ final String payload = MqttPublishPayload.bytesToStringAsString(
+ (message.payload as MqttPublishMessage).payload.message);
- final MqttPublishMessage payloadMessage =
- message.payload as MqttPublishMessage;
- final String payload =
- MqttPublishPayload.bytesToStringAsString(payloadMessage.payload.message);
-
- if (topic == '$topicPrefix/server/health') {
- if (payload == 'good') {
- process(MachineEvent.reachable);
- }
-
- if (payload == 'bad') {
- process(MachineEvent.unreachable);
- }
+ if (message.topic == '$topicPrefix/server/health') {
+ _onHealthMessage(payload);
+ return;
}
- // format <prefix>/contacts/<address>/state
- final List<String> parts = topic.split('/');
- if (parts.length != 4 || parts[1] != 'contact' || parts[3] != 'state') {
- continue;
+ if (parts.length == 4 && parts[1] == 'contact' && parts[3] == 'state') {
+ String address = parts[2];
+ _onContactMessage(payload, address);
+ return;
}
- final String address = parts[2];
+ }
+ }
- final bool? parsedState = _parseBool(payload);
+ void _onHealthMessage(String payload) {
+ switch (payload) {
+ case 'good':
+ process(MachineEvent.reachable);
+ case 'bad':
+ process(MachineEvent.unreachable);
+ }
+ }
- if (parsedState != null) {
- contacts[address] = parsedState;
- notifyListeners();
- }
+ void _onContactMessage(String payload, String address) {
+ final bool? parsedState = _parseBool(payload);
+
+ if (parsedState != null) {
+ contacts[address] = parsedState;
+ notifyListeners();
}
}