Refactoring

This commit is contained in:
Sven committed 2024-05-06 09:52:47 +02:00
1 parent 0d647b76d0
commit e97194fa70
2 files changed
+53 -60

No files matched your search

+6 -18
View File
@@ -18,6 +18,7 @@ import 'package:stadtbote/tools/connection_status.dart';
import 'package:stadtbote/tools/message_service.dart'; import 'package:stadtbote/tools/message_service.dart';
import 'package:stadtbote/tools/messages/job_received_message.dart'; import 'package:stadtbote/tools/messages/job_received_message.dart';
import 'package:stadtbote/tools/messages/refresh_badges_message.dart'; import 'package:stadtbote/tools/messages/refresh_badges_message.dart';
import 'package:stadtbote/tools/mqtt_core.dart';
import 'content_views/main_page.dart'; import 'content_views/main_page.dart';
import 'content_views/utils/content_view_widget.dart'; import 'content_views/utils/content_view_widget.dart';
@@ -66,26 +67,13 @@ class MyApp extends StatefulWidget {
State<MyApp> createState() => _MyAppState(); State<MyApp> createState() => _MyAppState();
} }
class _MyAppState extends State<MyApp> with WidgetsBindingObserver { class _MyAppState extends State<MyApp> {
@override final MqttCore mqttCore = MqttCore();
void initState() {
WidgetsBinding.instance.addObserver(this); @override void initState() {
super.initState();
_startLocationService(); _startLocationService();
super.initState();
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) async {
super.didChangeAppLifecycleState(state);
Util.logInfo('Lifecylcle changes: $state');
} }
@override @override
+47 -42
View File
@@ -180,61 +180,56 @@ class MqttCore {
Util.logInfo('_setupMqtt called'); Util.logInfo('_setupMqtt called');
_mqttClient!.updates?.listen((List<MqttReceivedMessage<MqttMessage>> c) { _mqttClient!.updates?.listen((List<MqttReceivedMessage<MqttMessage>> c) {
try { for (var message in c) {
final MqttPublishMessage message = c[0].payload as MqttPublishMessage; try {
String payload = utf8.decode(MqttPublishPayload.bytesToStringAsString(message.payload.message).codeUnits); if (message.topic.endsWith(_clientId)) {
var topic = message.variableHeader?.topicName; var messageBytes = message.payload.;
String payload = utf8.decode(GZipDecoder().decodeBytes(messageBytes));
Util.logInfo('message received\ntopic: $topic\nmessage: $payload'); var topicArray = message.variableHeader?.topicName;
var topicArraySplited = topicArray!.split("/");
var topic = topicArraySplited[3];
Map<String, dynamic> messageData = jsonDecode(payload); Util.logInfo('message received\ntopic: $topic\nmessage: $payload');
for (var entry in messageData.keys) { switch(topic) {
if (entry == 'payload') { case 'session':
var payload = messageData[entry]; _sessionMessageReceived(jsonDecode(payload));
for (var payloadEntry in payload.keys) { break;
var payloadData = payload[payloadEntry];
switch (payloadEntry) { case 'status':
case 'session': _statusMessageReceived(jsonDecode(payload));
_sessionMessageReceived(payloadData); break;
break;
case 'location_status': case 'ranks':
_locationSatusMessageReceived(jsonDecode(payload)); _rankingMessageReceived(jsonDecode(payload));
break; break;
case 'ranking': case 'job':
_rankingMessageReceived(jsonDecode(payload)); _jobMessageReceived(jsonDecode(payload));
break; break;
case 'job': case 'job_del':
_jobMessageReceived(jsonDecode(payload)); _jobDeleteReceived(jsonDecode(payload));
break; break;
case 'job_del': case 'sync_request':
_jobDeleteReceived(jsonDecode(payload)); _syncRequestReceived(jsonDecode(payload));
break; break;
case 'sync_request': case "mssg":
_syncRequestReceived(jsonDecode(payload)); _messageMessageReceived(jsonDecode(payload));
break; break;
case "mssg": case "upload_device_log":
_messageMessageReceived(jsonDecode(payload)); _messageUploadDeviceLogReceived(jsonDecode(payload));
break; break;
case "upload_device_log": default:
_messageUploadDeviceLogReceived(jsonDecode(payload)); Util.logInfo('Unknown topic: $topic');
break; break;
default:
Util.logInfo('Unknown topic: $topic');
break;
}
} }
} }
}
} catch(ex) { } catch(ex) {
Util.logException(ex.toString()); Util.logException(ex.toString());
} }
@@ -277,6 +272,16 @@ class MqttCore {
_startTrackTimer(); _startTrackTimer();
} }
void _statusMessageReceived(payloadData) async {
var statusMessage = Status.fromJson(payloadData);
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.status.clear();
await MyApp.isarInstance.status.put(statusMessage);
});
MessageService().publish<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdated, arguments: StatusInfoUpdate(status: statusMessage));
}
void _locationSatusMessageReceived(payloadData) async { void _locationSatusMessageReceived(payloadData) async {
var locationStatus = LocationStatus.fromJson(payloadData); var locationStatus = LocationStatus.fromJson(payloadData);