diff --git a/lib/content_views/approach_area_page.dart b/lib/content_views/approach_area_page.dart index a9d858e..c9a5e1e 100644 --- a/lib/content_views/approach_area_page.dart +++ b/lib/content_views/approach_area_page.dart @@ -98,6 +98,8 @@ class _ApproachAreaPageState extends State { for (int i = 0; i < _ranking!.ranks.length; i++) { var rank = _ranking!.ranks[i]; + var rankArea = rank.area ?? ""; + List entries = []; entries.add( GestureDetector( @@ -125,7 +127,7 @@ class _ApproachAreaPageState extends State { style: TextStyle(fontSize: 20, color: (i == 0 ? Colors.white : Colors.black)), ), Text( - rank.area, + rankArea, style: TextStyle(fontSize: 13, color: (i == 0 ? Colors.white : Colors.black)), ) ] @@ -191,7 +193,7 @@ class _ApproachAreaPageState extends State { setPosMessage.track!.pos!.acc = position.accuracy.toInt(); } - MessageService().publish(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "rank", message: setPosMessage.toJson())); + MessageService().publish(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "set_zip", message: setPosMessage.toJson())); } _initMessages() { diff --git a/lib/content_views/task_list_page.dart b/lib/content_views/task_list_page.dart index b6725bd..de1b355 100644 --- a/lib/content_views/task_list_page.dart +++ b/lib/content_views/task_list_page.dart @@ -476,26 +476,25 @@ class _TaskListPageState extends State { } _sendFinTourMessage() async { - var finTourMessage = FinTourMessage(); - finTourMessage.finTour = FinTour(); - finTourMessage.finTour.trId = widget.tour.id; - finTourMessage.finTour.com = _commisionNumber; + var finTourMessage = FinTour(); + finTourMessage.trId = widget.tour.id; + finTourMessage.com = _commisionNumber; var position = MyApp.currentPosition; if (position != null) { - finTourMessage.finTour.track = Track(); - finTourMessage.finTour.track!.time = DateTime.now().toIso8601String(); - finTourMessage.finTour.track!.pos = FinTaskPos(); - finTourMessage.finTour.track!.pos!.lat = position.latitude; - finTourMessage.finTour.track!.pos!.long = position.longitude; + finTourMessage.track = Track(); + finTourMessage.track!.time = DateTime.now().toIso8601String(); + finTourMessage.track!.pos = FinTaskPos(); + finTourMessage.track!.pos!.lat = position.latitude; + finTourMessage.track!.pos!.long = position.longitude; } - finTourMessage.finTour.tasks = []; + finTourMessage.tasks = []; for(var taskInfo in _taskList) { if (taskInfo.answer != null) { var finTourTask = FinTourTask.fromJson(jsonDecode(taskInfo.answer!)); - finTourMessage.finTour.tasks.add(finTourTask); + finTourMessage.tasks.add(finTourTask); } } diff --git a/lib/model/rank.dart b/lib/model/rank.dart index 05e247d..ea66b4a 100644 --- a/lib/model/rank.dart +++ b/lib/model/rank.dart @@ -26,7 +26,7 @@ class Rank { late String zip; - late String area; + String? area; late List vehicles; diff --git a/lib/model/rank.g.dart b/lib/model/rank.g.dart index 096128a..cbb717d 100644 --- a/lib/model/rank.g.dart +++ b/lib/model/rank.g.dart @@ -442,7 +442,12 @@ int _rankEstimateSize( Map> allOffsets, ) { var bytesCount = offsets.last; - bytesCount += 3 + object.area.length * 3; + { + final value = object.area; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } bytesCount += 3 + object.vehicles.length * 3; { final offsets = allOffsets[Vehicle]!; @@ -479,7 +484,7 @@ Rank _rankDeserialize( Map> allOffsets, ) { final object = Rank(); - object.area = reader.readString(offsets[0]); + object.area = reader.readStringOrNull(offsets[0]); object.id = reader.readLong(offsets[1]); object.vehicles = reader.readObjectList( offsets[2], @@ -500,7 +505,7 @@ P _rankDeserializeProp

( ) { switch (propertyId) { case 0: - return (reader.readString(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 1: return (reader.readLong(offset)) as P; case 2: @@ -519,8 +524,24 @@ P _rankDeserializeProp

( } extension RankQueryFilter on QueryBuilder { + QueryBuilder areaIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'area', + )); + }); + } + + QueryBuilder areaIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'area', + )); + }); + } + QueryBuilder areaEqualTo( - String value, { + String? value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { @@ -533,7 +554,7 @@ extension RankQueryFilter on QueryBuilder { } QueryBuilder areaGreaterThan( - String value, { + String? value, { bool include = false, bool caseSensitive = true, }) { @@ -548,7 +569,7 @@ extension RankQueryFilter on QueryBuilder { } QueryBuilder areaLessThan( - String value, { + String? value, { bool include = false, bool caseSensitive = true, }) { @@ -563,8 +584,8 @@ extension RankQueryFilter on QueryBuilder { } QueryBuilder areaBetween( - String lower, - String upper, { + String? lower, + String? upper, { bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, @@ -1155,7 +1176,7 @@ Map _$RankingToJson(Ranking instance) => { Rank _$RankFromJson(Map json) => Rank() ..id = json['id'] as int ..zip = json['zip'] as String - ..area = json['area'] as String + ..area = json['area'] as String? ..vehicles = (json['vehicles'] as List) .map((e) => Vehicle.fromJson(e as Map)) .toList(); diff --git a/lib/protocoll_messages/payload_container.dart b/lib/protocoll_messages/payload_container.dart deleted file mode 100644 index d84b9dc..0000000 --- a/lib/protocoll_messages/payload_container.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'payload_container.g.dart'; - -@JsonSerializable() -class PayloadContainer { - late String recv; - - late bool store; - - late String id; - - late Map payload; - - PayloadContainer(); - - factory PayloadContainer.fromJson(Map json) => _$PayloadContainerFromJson(json); - - Map toJson() => _$PayloadContainerToJson(this); - -} \ No newline at end of file diff --git a/lib/protocoll_messages/payload_container.g.dart b/lib/protocoll_messages/payload_container.g.dart deleted file mode 100644 index 60e252c..0000000 --- a/lib/protocoll_messages/payload_container.g.dart +++ /dev/null @@ -1,22 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'payload_container.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -PayloadContainer _$PayloadContainerFromJson(Map json) => - PayloadContainer() - ..recv = json['recv'] as String - ..store = json['store'] as bool - ..id = json['id'] as String - ..payload = json['payload'] as Map; - -Map _$PayloadContainerToJson(PayloadContainer instance) => - { - 'recv': instance.recv, - 'store': instance.store, - 'id': instance.id, - 'payload': instance.payload, - }; diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index bfd28b4..d6f8d60 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -21,7 +21,7 @@ import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart'; import 'package:stadtbote/protocoll_messages/device_log_request.dart'; import 'package:stadtbote/protocoll_messages/device_log_response.dart'; import 'package:stadtbote/protocoll_messages/device_object.dart'; -import 'package:stadtbote/protocoll_messages/payload_container.dart'; +import 'package:stadtbote/protocoll_messages/job_del_message.dart'; import 'package:stadtbote/protocoll_messages/start_session_message.dart'; import 'package:stadtbote/protocoll_messages/status_info_update.dart'; import 'package:stadtbote/protocoll_messages/sync_jobs_message.dart'; @@ -147,29 +147,17 @@ class MqttCore { } _publishText(String topic, String text) { - var buffer = Uint8Buffer(); - buffer.addAll(GZipEncoder().encode(const Utf8Encoder().convert(text)) as Iterable); - - var messageTopic = "$_toServerTopic$topic/$_clientId"; - - _mqttClient!.publishMessage(messageTopic, MqttQos.exactlyOnce, buffer); - - Util.logInfo("message\n$text\nsend to $messageTopic"); - } - - publishPayloadMessage(String topic, Map payload) { - var payloadContainer = PayloadContainer(); - payloadContainer.id = const Uuid().v4().toString(); - payloadContainer.recv = topic; - payloadContainer.store = true; - payloadContainer.payload = payload; - - var json = jsonEncode(payloadContainer.toJson()); - try { - _publishText(topic, json); - } catch (e) { - _enqueueMessage(topic, jsonEncode(payloadContainer.toJson())); + var buffer = Uint8Buffer(); + buffer.addAll(GZipEncoder().encode(const Utf8Encoder().convert(text)) as Iterable); + + var messageTopic = "$_toServerTopic$topic/$_clientId"; + + _mqttClient!.publishMessage(messageTopic, MqttQos.exactlyOnce, buffer); + + Util.logInfo("message\n$text\nsend to $messageTopic"); + } catch (ex) { + _enqueueMessage(topic, text); } } @@ -200,7 +188,7 @@ class MqttCore { _statusMessageReceived(jsonDecode(payload)); break; - case 'ranks': + case 'ranking': _rankingMessageReceived(jsonDecode(payload)); break; @@ -338,13 +326,12 @@ class MqttCore { } void _jobDeleteReceived(payloadData) async { - for (var jobId in payloadData) { - await MyApp.isarInstance.writeTxn(() async { - await MyApp.isarInstance.jobs.delete(jobId); - }); + var jobDelMessage = JobDelMessage.fromJson(payloadData); + await MyApp.isarInstance.writeTxn(() async { + await MyApp.isarInstance.jobs.delete(jobDelMessage.id); + }); - MessageService().publish(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: jobId)); - } + MessageService().publish(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: jobDelMessage.id)); } void _syncRequestReceived(payloadData) async { @@ -494,7 +481,7 @@ class MqttCore { answer.sync.jobs.add(syncJob); } - publishPayloadMessage("sync_request_response", answer.toJson()); + _publishText("sync", jsonEncode(answer.toJson())); } void _startTrackTimer() { @@ -508,7 +495,7 @@ class MqttCore { trackMessage.pos!.long = position.longitude; trackMessage.pos!.acc = position.accuracy.toInt(); - publishPayloadMessage("track", trackMessage.toJson()); + _publishText("track", jsonEncode(trackMessage.toJson())); } }); } @@ -555,12 +542,12 @@ class MqttCore { message.received.ver = job.ver; message.received.utc = DateTime.now().millisecondsSinceEpoch; - publishPayloadMessage('job', message.toJson()); + _publishText('job', jsonEncode(message.toJson())); } void initMessages() { MessageService().subscribe(Constants.messageTopicPublishPayload, this, (PublishPayloadMessage payloadMessage) { - publishPayloadMessage(payloadMessage.topic, payloadMessage.message); + _publishText(payloadMessage.topic, jsonEncode(payloadMessage.message)); }); MessageService().subscribe(Constants.messageTopicDisconnectClient, this,