From 4b0203b71b468346f0885bf30ce83032ea37b9df Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Mon, 4 Mar 2024 11:12:26 +0100 Subject: [PATCH] Erweiterungen --- lib/model/enqueued_message.g.dart | 70 +++++++++---------- lib/popups/infos_popup.dart | 2 +- lib/protocoll_messages/acknowledge_job.dart | 21 ++++++ lib/protocoll_messages/acknowledge_job.g.dart | 22 ++++++ lib/tools/mqtt_core.dart | 29 ++++++++ 5 files changed, 107 insertions(+), 37 deletions(-) create mode 100644 lib/protocoll_messages/acknowledge_job.dart create mode 100644 lib/protocoll_messages/acknowledge_job.g.dart diff --git a/lib/model/enqueued_message.g.dart b/lib/model/enqueued_message.g.dart index 41c3d7a..cca2771 100644 --- a/lib/model/enqueued_message.g.dart +++ b/lib/model/enqueued_message.g.dart @@ -22,9 +22,9 @@ const EnqueuedMessageSchema = CollectionSchema( name: r'payload', type: IsarType.string, ), - r'receiver': PropertySchema( + r'topic': PropertySchema( id: 1, - name: r'receiver', + name: r'topic', type: IsarType.string, ) }, @@ -380,13 +380,13 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverEqualTo( + topicEqualTo( String value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( - property: r'receiver', + property: r'topic', value: value, caseSensitive: caseSensitive, )); @@ -394,7 +394,7 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverGreaterThan( + topicGreaterThan( String value, { bool include = false, bool caseSensitive = true, @@ -402,7 +402,7 @@ extension EnqueuedMessageQueryFilter return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.greaterThan( include: include, - property: r'receiver', + property: r'topic', value: value, caseSensitive: caseSensitive, )); @@ -410,7 +410,7 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverLessThan( + topicLessThan( String value, { bool include = false, bool caseSensitive = true, @@ -418,7 +418,7 @@ extension EnqueuedMessageQueryFilter return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.lessThan( include: include, - property: r'receiver', + property: r'topic', value: value, caseSensitive: caseSensitive, )); @@ -426,7 +426,7 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverBetween( + topicBetween( String lower, String upper, { bool includeLower = true, @@ -435,7 +435,7 @@ extension EnqueuedMessageQueryFilter }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.between( - property: r'receiver', + property: r'topic', lower: lower, includeLower: includeLower, upper: upper, @@ -446,13 +446,13 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverStartsWith( + topicStartsWith( String value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.startsWith( - property: r'receiver', + property: r'topic', value: value, caseSensitive: caseSensitive, )); @@ -460,13 +460,13 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverEndsWith( + topicEndsWith( String value, { bool caseSensitive = true, }) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.endsWith( - property: r'receiver', + property: r'topic', value: value, caseSensitive: caseSensitive, )); @@ -474,10 +474,10 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverContains(String value, {bool caseSensitive = true}) { + topicContains(String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.contains( - property: r'receiver', + property: r'topic', value: value, caseSensitive: caseSensitive, )); @@ -485,10 +485,10 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverMatches(String pattern, {bool caseSensitive = true}) { + topicMatches(String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.matches( - property: r'receiver', + property: r'topic', wildcard: pattern, caseSensitive: caseSensitive, )); @@ -496,20 +496,20 @@ extension EnqueuedMessageQueryFilter } QueryBuilder - receiverIsEmpty() { + topicIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( - property: r'receiver', + property: r'topic', value: '', )); }); } QueryBuilder - receiverIsNotEmpty() { + topicIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.greaterThan( - property: r'receiver', + property: r'topic', value: '', )); }); @@ -537,17 +537,16 @@ extension EnqueuedMessageQuerySortBy }); } - QueryBuilder - sortByReceiver() { + QueryBuilder sortByTopic() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'receiver', Sort.asc); + return query.addSortBy(r'topic', Sort.asc); }); } QueryBuilder - sortByReceiverDesc() { + sortByTopicDesc() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'receiver', Sort.desc); + return query.addSortBy(r'topic', Sort.desc); }); } } @@ -579,17 +578,16 @@ extension EnqueuedMessageQuerySortThenBy }); } - QueryBuilder - thenByReceiver() { + QueryBuilder thenByTopic() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'receiver', Sort.asc); + return query.addSortBy(r'topic', Sort.asc); }); } QueryBuilder - thenByReceiverDesc() { + thenByTopicDesc() { return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'receiver', Sort.desc); + return query.addSortBy(r'topic', Sort.desc); }); } } @@ -603,10 +601,10 @@ extension EnqueuedMessageQueryWhereDistinct }); } - QueryBuilder distinctByReceiver( + QueryBuilder distinctByTopic( {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'receiver', caseSensitive: caseSensitive); + return query.addDistinctBy(r'topic', caseSensitive: caseSensitive); }); } } @@ -625,9 +623,9 @@ extension EnqueuedMessageQueryProperty }); } - QueryBuilder receiverProperty() { + QueryBuilder topicProperty() { return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'receiver'); + return query.addPropertyName(r'topic'); }); } } diff --git a/lib/popups/infos_popup.dart b/lib/popups/infos_popup.dart index c6fb593..c997cd5 100644 --- a/lib/popups/infos_popup.dart +++ b/lib/popups/infos_popup.dart @@ -5,7 +5,7 @@ import 'package:stadtbote/tools/mqtt_core.dart'; import 'package:stadtbote/tools/util.dart'; void showInfosPopup(BuildContext context, SessionStatus? status) async { - var text = "Versionsnummer: a206\n"; + var text = "Versionsnummer: a207\n"; text += "Verbindungsstatus: ${MqttCore.instance.connectionState == ConnectionStateEnum.connected ? "Verbunden" : "NICHT verbunden"}\n"; text += "GPS-Status: ${MyApp.currentPosition != null ? MyApp.currentPosition!.timestamp.toString() : "Unbekannt"}\n"; text += "\n"; diff --git a/lib/protocoll_messages/acknowledge_job.dart b/lib/protocoll_messages/acknowledge_job.dart new file mode 100644 index 0000000..f021863 --- /dev/null +++ b/lib/protocoll_messages/acknowledge_job.dart @@ -0,0 +1,21 @@ +import 'package:isar/isar.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'acknowledge_job.g.dart'; + +@JsonSerializable() +class AcknowledgeJob { + late int id; + + late int state; + + late int ver; + + late int utc; + + AcknowledgeJob(); + + factory AcknowledgeJob.fromJson(Map json) => _$AcknowledgeJobFromJson(json); + + Map toJson() => _$AcknowledgeJobToJson(this); +} diff --git a/lib/protocoll_messages/acknowledge_job.g.dart b/lib/protocoll_messages/acknowledge_job.g.dart new file mode 100644 index 0000000..200e22e --- /dev/null +++ b/lib/protocoll_messages/acknowledge_job.g.dart @@ -0,0 +1,22 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'acknowledge_job.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +AcknowledgeJob _$AcknowledgeJobFromJson(Map json) => + AcknowledgeJob() + ..id = json['id'] as int + ..state = json['state'] as int + ..ver = json['ver'] as int + ..utc = json['utc'] as int; + +Map _$AcknowledgeJobToJson(AcknowledgeJob instance) => + { + 'id': instance.id, + 'state': instance.state, + 'ver': instance.ver, + 'utc': instance.utc, + }; diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index d55d81e..9e42f05 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -9,6 +9,7 @@ import 'package:mqtt_client/mqtt_server_client.dart'; import 'package:stadtbote/model/enqueued_message.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_object.dart'; @@ -285,6 +286,8 @@ class MqttCore { } MessageService().publish(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob)); + + _acknowlegdeJob(newJob); } } @@ -483,4 +486,30 @@ class MqttCore { } } } + + /* + private void AcknowledgeJob(Job job) + { + var payloadObject = new JObject(); + + var receivedObject = new JObject(); + payloadObject.Add(new JProperty("received", receivedObject)); + + receivedObject.Add(new JProperty("id", job.Id)); + receivedObject.Add(new JProperty("state", job.State)); + receivedObject.Add(new JProperty("ver", job.Ver)); + receivedObject.Add(new JProperty("utc", Utils.GetUTCTimestamp())); + + SendJsonMessageAsync("job", payloadObject); + } + */ + void _acknowlegdeJob(Job job) { + var message = AcknowledgeJob(); + message.id = job.id; + message.state = job.state; + message.ver = job.ver; + message.utc = DateTime.now().millisecondsSinceEpoch; + + MqttCore.instance.publishPayloadMessage('job', message.toJson()); + } }