From 279f6cb8687563512d4e97f76b1a0717a688a886 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Fri, 15 Mar 2024 11:56:21 +0100 Subject: [PATCH] Erweiterungen --- lib/content_views/main_page.dart | 13 +++++++++++-- lib/model/log_entry.dart | 2 ++ lib/protocoll_messages/device_log.dart | 13 +++++++++++++ lib/protocoll_messages/device_log.g.dart | 16 ++++++++++++++++ lib/tools/mqtt_core.dart | 15 +++++++++++++++ 5 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 lib/protocoll_messages/device_log.dart create mode 100644 lib/protocoll_messages/device_log.g.dart diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index f2b8888..35067ab 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:isar/isar.dart'; @@ -9,10 +11,12 @@ import 'package:stadtbote/content_views/messages_page.dart'; import 'package:stadtbote/content_views/utils/content_view_widget.dart'; import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:stadtbote/model/job.dart'; +import 'package:stadtbote/model/log_entry.dart'; import 'package:stadtbote/model/message.dart'; import 'package:stadtbote/model/session_status.dart'; import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/popups/infos_popup.dart'; +import 'package:stadtbote/protocoll_messages/device_log.dart'; import 'package:stadtbote/protocoll_messages/logout_message.dart'; import 'package:stadtbote/tools/message_service.dart'; import 'package:stadtbote/tools/messages/job_deleted_message.dart'; @@ -387,8 +391,13 @@ class _MainPageState extends State { MqttCore.instance.publishPayloadMessage('session', logoutMessage.toJson()); } - void _test() { - var otto = MyApp.isarInstance; + void _test() async { + var logEintries = await MyApp.isarInstance.logEntrys.where().findAll(); + + var deviceLog = DeviceLog(); + deviceLog.entries = logEintries; + + var json = jsonEncode(deviceLog.toJson()); Util.logInfo('message'); } diff --git a/lib/model/log_entry.dart b/lib/model/log_entry.dart index f3b0cb7..b8d223e 100644 --- a/lib/model/log_entry.dart +++ b/lib/model/log_entry.dart @@ -23,5 +23,7 @@ class LogEntry { LogEntry(); + factory LogEntry.fromJson(Map json) => _$LogEntryFromJson(json); + Map toJson() => _$LogEntryToJson(this); } \ No newline at end of file diff --git a/lib/protocoll_messages/device_log.dart b/lib/protocoll_messages/device_log.dart new file mode 100644 index 0000000..7274dda --- /dev/null +++ b/lib/protocoll_messages/device_log.dart @@ -0,0 +1,13 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:stadtbote/model/log_entry.dart'; + +part 'device_log.g.dart'; + +@JsonSerializable() +class DeviceLog { + late List entries; + + DeviceLog(); + + Map toJson() => _$DeviceLogToJson(this); +} diff --git a/lib/protocoll_messages/device_log.g.dart b/lib/protocoll_messages/device_log.g.dart new file mode 100644 index 0000000..30f1822 --- /dev/null +++ b/lib/protocoll_messages/device_log.g.dart @@ -0,0 +1,16 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'device_log.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +DeviceLog _$DeviceLogFromJson(Map json) => DeviceLog() + ..entries = (json['entries'] as List) + .map((e) => LogEntry.fromJson(e as Map)) + .toList(); + +Map _$DeviceLogToJson(DeviceLog instance) => { + 'entries': instance.entries, + }; diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index b4d72cf..6b86c9a 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -7,11 +7,13 @@ import 'package:isar/isar.dart'; import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart'; import 'package:stadtbote/model/enqueued_message.dart'; +import 'package:stadtbote/model/log_entry.dart'; import 'package:stadtbote/model/ranking.dart'; import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/protocoll_messages/acknowledge_job.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_request.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart'; +import 'package:stadtbote/protocoll_messages/device_log.dart'; import 'package:stadtbote/protocoll_messages/device_object.dart'; import 'package:stadtbote/model/job.dart'; import 'package:stadtbote/model/message.dart'; @@ -204,6 +206,10 @@ class MqttCore { _messageMessageReceived(payloadData); break; + case "device_log": + _messageDeviceLogReceived(payloadData); + break; + default: Util.logInfo('Unknown topic: $payloadEntry'); break; @@ -318,6 +324,15 @@ class MqttCore { MessageService().publish(Constants.messageTopicMessageReceived, arguments: MessageReceivedMessage(message: newMessage)); } + void _messageDeviceLogReceived(payloadData) async { + var logEintries = await MyApp.isarInstance.logEntrys.where().findAll(); + + var deviceLog = DeviceLog(); + deviceLog.entries = logEintries; + + MqttCore.instance.publishPayloadMessage("device_log", deviceLog.toJson()); + } + void _startReconnectTimer() { connectionState = ConnectionStateEnum.notConnected;