diff --git a/lib/content_views/messages_page.dart b/lib/content_views/messages_page.dart index 03b3e76..a82b56e 100644 --- a/lib/content_views/messages_page.dart +++ b/lib/content_views/messages_page.dart @@ -99,7 +99,7 @@ class _MessagesPageState extends State { message.mssg.text = [text.text]; message.mssg.from = _sid; message.mssg.subj = ''; - message.mssg.time = now.toIso8601String(); + message.mssg.time = now.toUtc().toIso8601String(); message.mssg.read = true; message.mssg.id = await sbmessage.Message.getNextId(); @@ -132,9 +132,7 @@ class _MessagesPageState extends State { _messages.add(types.TextMessage( author: message.from == _sid ? _user : _central, - createdAt: DateTime - .parse(message.time) - .millisecondsSinceEpoch, + createdAt: DateTime.parse(message.time).toLocal().millisecondsSinceEpoch, id: message.id.toString(), text: text, )); diff --git a/lib/popups/infos_popup.dart b/lib/popups/infos_popup.dart index c997cd5..d714117 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: a207\n"; + var text = "Versionsnummer: a208\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/popups/tasks_popups/take_photos_popup.dart b/lib/popups/tasks_popups/take_photos_popup.dart index 49f6312..4ea7860 100644 --- a/lib/popups/tasks_popups/take_photos_popup.dart +++ b/lib/popups/tasks_popups/take_photos_popup.dart @@ -1,6 +1,7 @@ import 'package:carousel_slider/carousel_slider.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:image/image.dart' as imageLib; import 'package:stadtbote/model/task_info.dart'; import 'package:stadtbote/tools/util.dart'; @@ -19,22 +20,35 @@ Future showTakePhotosPopup(BuildContext context, TaskInfo taskInfo, Functi backgroundColor: Colors.white, content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) { void capturePhoto() async { - var photo = await Util.capturePhoto(); + try { + var photo = await Util.capturePhoto(); - if (photo != null) { - var imageData = await photo.readAsBytes(); - photo.delete(); + if (photo != null) { + var fullsizeImageData = await photo.readAsBytes(); - imageDataList.add(imageData); + imageLib.Image? image = imageLib.decodeImage(fullsizeImageData); - imageWidgetsList.add(GestureDetector( - onTap: () {}, - child: Image.memory(imageData), - )); + if (image != null) { + var thumbnail = imageLib.copyResize(image, width: 800); - imageWidgetsListNotifier.value = imageWidgetsList; + var resizedImageData = imageLib.encodeJpg(thumbnail); - setState(() {}); + photo.delete(); + + imageDataList.add(resizedImageData); + + imageWidgetsList.add(GestureDetector( + onTap: () {}, + child: Image.memory(resizedImageData), + )); + + imageWidgetsListNotifier.value = imageWidgetsList; + + setState(() {}); + } + } + } catch (ex) { + Util.logException(ex.toString()); } } diff --git a/lib/protocoll_messages/acknowledge_job.dart b/lib/protocoll_messages/acknowledge_job.dart index f021863..6fb92e2 100644 --- a/lib/protocoll_messages/acknowledge_job.dart +++ b/lib/protocoll_messages/acknowledge_job.dart @@ -5,6 +5,17 @@ part 'acknowledge_job.g.dart'; @JsonSerializable() class AcknowledgeJob { + late AcknowledgeJobReceived received; + + AcknowledgeJob(); + + factory AcknowledgeJob.fromJson(Map json) => _$AcknowledgeJobFromJson(json); + + Map toJson() => _$AcknowledgeJobToJson(this); +} + +@JsonSerializable() +class AcknowledgeJobReceived { late int id; late int state; @@ -13,9 +24,9 @@ class AcknowledgeJob { late int utc; - AcknowledgeJob(); + AcknowledgeJobReceived(); - factory AcknowledgeJob.fromJson(Map json) => _$AcknowledgeJobFromJson(json); + factory AcknowledgeJobReceived.fromJson(Map json) => _$AcknowledgeJobReceivedFromJson(json); - Map toJson() => _$AcknowledgeJobToJson(this); + Map toJson() => _$AcknowledgeJobReceivedToJson(this); } diff --git a/lib/protocoll_messages/acknowledge_job.g.dart b/lib/protocoll_messages/acknowledge_job.g.dart index 200e22e..697f489 100644 --- a/lib/protocoll_messages/acknowledge_job.g.dart +++ b/lib/protocoll_messages/acknowledge_job.g.dart @@ -8,12 +8,24 @@ part of 'acknowledge_job.dart'; AcknowledgeJob _$AcknowledgeJobFromJson(Map json) => AcknowledgeJob() + ..received = AcknowledgeJobReceived.fromJson( + json['received'] as Map); + +Map _$AcknowledgeJobToJson(AcknowledgeJob instance) => + { + 'received': instance.received, + }; + +AcknowledgeJobReceived _$AcknowledgeJobReceivedFromJson( + Map json) => + AcknowledgeJobReceived() ..id = json['id'] as int ..state = json['state'] as int ..ver = json['ver'] as int ..utc = json['utc'] as int; -Map _$AcknowledgeJobToJson(AcknowledgeJob instance) => +Map _$AcknowledgeJobReceivedToJson( + AcknowledgeJobReceived instance) => { 'id': instance.id, 'state': instance.state, diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 9e42f05..8fe3e3f 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -487,28 +487,15 @@ 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; + message.received = AcknowledgeJobReceived(); + message.received.id = job.id; + message.received.state = job.state; + message.received.ver = job.ver; + message.received.utc = DateTime.now().millisecondsSinceEpoch; + + var json = jsonEncode(message.toJson()); MqttCore.instance.publishPayloadMessage('job', message.toJson()); } diff --git a/pubspec.lock b/pubspec.lock index 86ef3d3..58a8382 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -649,13 +649,13 @@ packages: source: hosted version: "4.0.2" image: - dependency: transitive + dependency: "direct main" description: name: image - sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" + sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e" url: "https://pub.dev" source: hosted - version: "4.1.3" + version: "4.1.7" image_picker: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index efc11ad..970fcd9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -67,6 +67,7 @@ dependencies: expandable: ^5.0.1 url_launcher: ^6.2.4 audioplayers: ^5.2.1 + image: ^4.1.7 dev_dependencies: flutter_test: