From 4eef0fa119509a8967c27d167fe193b7f4cf5b3b Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Fri, 8 Mar 2024 14:41:53 +0100 Subject: [PATCH] Fehlerkorrekturen --- android/app/build.gradle | 4 +- lib/content_views/main_page.dart | 5 +++ lib/main.dart | 3 ++ lib/popups/accept_jobs_popup.dart | 37 +++++++++++++------ lib/popups/infos_popup.dart | 2 +- lib/tools/constants.dart | 1 + lib/tools/messages/update_badges_message.dart | 4 ++ lib/tools/mqtt_core.dart | 6 ++- pubspec.yaml | 2 +- 9 files changed, 47 insertions(+), 17 deletions(-) create mode 100644 lib/tools/messages/update_badges_message.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 208f653..428bbdd 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -55,8 +55,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName + versionCode 2 + versionName 'A212' minSdkVersion 28 } diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index 0ab5429..2e13268 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -20,6 +20,7 @@ import 'package:stadtbote/tools/messages/message_message.dart'; import 'package:stadtbote/tools/messages/session_info_update.dart'; import 'package:badges/badges.dart' as badges; import 'package:stadtbote/tools/messages/status_info_update.dart'; +import 'package:stadtbote/tools/messages/update_badges_message.dart'; import 'package:stadtbote/tools/mqtt_core.dart'; import '../main.dart'; @@ -274,6 +275,10 @@ class _MainPageState extends State { MessageService().subscribe(Constants.messageTopicJobDeleted, this, (JobDeletedMessage job) { _refreshBadges(); }); + + MessageService().subscribe(Constants.messageTopicUpdateBadges, this, (UpdateBadgesMessage message) { + _refreshBadges(); + }); } void _exitMessages() { diff --git a/lib/main.dart b/lib/main.dart index 07bd168..b97fd9b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,6 +16,7 @@ import 'package:stadtbote/model/session_status.dart'; 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/update_badges_message.dart'; import 'tools/mqtt_core.dart'; import 'content_views/main_page.dart'; @@ -430,6 +431,8 @@ class _MainState extends State
with SingleTickerProviderStateMixin { await showAcceptJobsPopup(context, await MyApp.isarInstance.jobs.filter().stateEqualTo(0).findAll(), () { _dialogOpened = false; + + MessageService().publish(Constants.messageTopicUpdateBadges, arguments: UpdateBadgesMessage()); }); } } diff --git a/lib/popups/accept_jobs_popup.dart b/lib/popups/accept_jobs_popup.dart index 4de743c..0fcfc46 100644 --- a/lib/popups/accept_jobs_popup.dart +++ b/lib/popups/accept_jobs_popup.dart @@ -1,3 +1,5 @@ +import 'dart:collection'; + import 'package:expandable/expandable.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; @@ -14,7 +16,8 @@ import 'package:stadtbote/tools/util.dart'; import 'package:badges/badges.dart' as badges; Future showAcceptJobsPopup(BuildContext context, List jobs, Function onFinished) async { - var jobsSet = jobs.toSet(); + var jobsMap = HashMap(); + for (var job in jobs) { jobsMap[job.id] = job; } await showDialog( context: context, @@ -32,23 +35,27 @@ Future showAcceptJobsPopup(BuildContext context, List jobs, Function shadowColor: Colors.transparent, backgroundColor: Colors.white, content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) { - if (jobsSet.isEmpty) { + if (jobsMap.isEmpty) { Navigator.of(context).pop(); onFinished(); } - MessageService().unsubscribe(Constants.messageTopicJobDeleted, jobsSet); - MessageService().unsubscribe(Constants.messageTopicJobReceived, jobsSet); + MessageService().unsubscribe(Constants.messageTopicJobDeleted, jobsMap); + MessageService().unsubscribe(Constants.messageTopicJobReceived, jobsMap); - MessageService().subscribe(Constants.messageTopicJobDeleted, jobsSet, (jobDeletedMessage) async { - jobsSet.removeWhere((element) => element.id == jobDeletedMessage.jobId); + MessageService().subscribe(Constants.messageTopicJobDeleted, jobsMap, (jobDeletedMessage) async { + jobsMap.removeWhere((key, value) => key == jobDeletedMessage.jobId); setState(() {}); }); - MessageService().subscribe(Constants.messageTopicJobReceived, jobsSet, (jobdMessage) async { - jobsSet.add(jobdMessage.job); + MessageService().subscribe(Constants.messageTopicJobReceived, jobsMap, (jobdMessage) async { + if (jobsMap.containsKey(jobdMessage.job.id)) { + jobsMap.removeWhere((key, value) => key == jobdMessage.job.id); + } + + jobsMap[jobdMessage.job.id] = jobdMessage.job; setState(() {}); }); @@ -61,9 +68,9 @@ Future showAcceptJobsPopup(BuildContext context, List jobs, Function height: 100, padding: const EdgeInsets.all(5), child: ListView.builder( - itemCount: jobsSet.length, + itemCount: jobsMap.length, itemBuilder: (_, i) { - var job = jobsSet.toList()[i]; + var job = jobsMap.values.toList()[i]; String remarkString = ''; for (var remark in job.rem) { @@ -164,11 +171,17 @@ Future showAcceptJobsPopup(BuildContext context, List jobs, Function Row(children: [ Expanded( child: getDefaultButton(!job.global ? 'Ablehnen' : 'Ignorieren', - () => {_sendAnswer(job, !job.global ? 2 : 3), jobsSet.remove(job), setState(() {})}), + () { + _sendAnswer(job, !job.global ? 2 : 3); + + jobsMap.removeWhere((key, value) => key == job.id); + + setState(() {}); + }), ), const SizedBox(width: 20), Expanded( - child: getDefaultButton('Annehmen', () => {_sendAnswer(job, 1), jobsSet.remove(job), setState(() {})}), + child: getDefaultButton('Annehmen', () => {_sendAnswer(job, 1), jobsMap.remove(job), setState(() {})}), ) ]) ], diff --git a/lib/popups/infos_popup.dart b/lib/popups/infos_popup.dart index de7d0d6..acf9743 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: a211\n"; + var text = "Versionsnummer: a212\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/tools/constants.dart b/lib/tools/constants.dart index daf9eae..2f7d228 100644 --- a/lib/tools/constants.dart +++ b/lib/tools/constants.dart @@ -11,6 +11,7 @@ class Constants { static const String messageTopicRankingUpdated = "ranking_updated"; static const String messageTopicJobReceived = "job_received"; static const String messageTopicJobDeleted = "job_deleted"; + static const String messageTopicUpdateBadges = "update_badges"; static const String messageTopicMessageReceived = "message_received"; static const String messageTopicPushContentView = "push_content_view"; static const String messageTopicPopContentView = "pop_content_view"; diff --git a/lib/tools/messages/update_badges_message.dart b/lib/tools/messages/update_badges_message.dart new file mode 100644 index 0000000..c6041d7 --- /dev/null +++ b/lib/tools/messages/update_badges_message.dart @@ -0,0 +1,4 @@ + +class UpdateBadgesMessage { + UpdateBadgesMessage(); +} \ No newline at end of file diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 8c68990..244f894 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -283,7 +283,11 @@ class MqttCore { } } - MessageService().publish(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob)); + try { + MessageService().publish(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob)); + } catch (ex) { + Util.logException("publish messageTopicJobReceived failed!"); + } _acknowlegdeJob(newJob); } diff --git a/pubspec.yaml b/pubspec.yaml index 970fcd9..b090875 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 5.0.0+1 +version: 1.0.0+1 environment: sdk: '>=2.19.6 <3.0.0'