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/messages/job_received_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/utils/content_view_widget.dart';
@@ -66,26 +67,13 @@ class MyApp extends StatefulWidget {
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
@override
void initState() {
WidgetsBinding.instance.addObserver(this);
class _MyAppState extends State<MyApp> {
final MqttCore mqttCore = MqttCore();
@override void initState() {
super.initState();
_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
+47 -42
View File
@@ -180,61 +180,56 @@ class MqttCore {
Util.logInfo('_setupMqtt called');
_mqttClient!.updates?.listen((List<MqttReceivedMessage<MqttMessage>> c) {
try {
final MqttPublishMessage message = c[0].payload as MqttPublishMessage;
String payload = utf8.decode(MqttPublishPayload.bytesToStringAsString(message.payload.message).codeUnits);
var topic = message.variableHeader?.topicName;
for (var message in c) {
try {
if (message.topic.endsWith(_clientId)) {
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) {
if (entry == 'payload') {
var payload = messageData[entry];
for (var payloadEntry in payload.keys) {
var payloadData = payload[payloadEntry];
switch(topic) {
case 'session':
_sessionMessageReceived(jsonDecode(payload));
break;
switch (payloadEntry) {
case 'session':
_sessionMessageReceived(payloadData);
break;
case 'status':
_statusMessageReceived(jsonDecode(payload));
break;
case 'location_status':
_locationSatusMessageReceived(jsonDecode(payload));
break;
case 'ranks':
_rankingMessageReceived(jsonDecode(payload));
break;
case 'ranking':
_rankingMessageReceived(jsonDecode(payload));
break;
case 'job':
_jobMessageReceived(jsonDecode(payload));
break;
case 'job':
_jobMessageReceived(jsonDecode(payload));
break;
case 'job_del':
_jobDeleteReceived(jsonDecode(payload));
break;
case 'job_del':
_jobDeleteReceived(jsonDecode(payload));
break;
case 'sync_request':
_syncRequestReceived(jsonDecode(payload));
break;
case 'sync_request':
_syncRequestReceived(jsonDecode(payload));
break;
case "mssg":
_messageMessageReceived(jsonDecode(payload));
break;
case "mssg":
_messageMessageReceived(jsonDecode(payload));
break;
case "upload_device_log":
_messageUploadDeviceLogReceived(jsonDecode(payload));
break;
case "upload_device_log":
_messageUploadDeviceLogReceived(jsonDecode(payload));
break;
default:
Util.logInfo('Unknown topic: $topic');
break;
}
default:
Util.logInfo('Unknown topic: $topic');
break;
}
}
}
} catch(ex) {
Util.logException(ex.toString());
}
@@ -277,6 +272,16 @@ class MqttCore {
_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 {
var locationStatus = LocationStatus.fromJson(payloadData);