Refactoring
This commit is contained in:
1 parent
0d647b76d0
commit
e97194fa70
2 files changed
+53
-60
No files matched your search
+6
-18
@@ -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
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user