From 550c11cb58ccb8a886c5212b2d100e04ec6199b0 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Tue, 16 Jan 2024 14:34:14 +0100 Subject: [PATCH] Erweiterungen --- lib/content_views/main_page.dart | 23 +++++++++++++++---- lib/tools/constants.dart | 1 + lib/tools/messages/job_received_message.dart | 7 ++++++ .../{ => messages}/session_info_update.dart | 0 lib/tools/mqtt_core.dart | 7 ++++-- 5 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 lib/tools/messages/job_received_message.dart rename lib/tools/{ => messages}/session_info_update.dart (100%) diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index a85b5da..4dd4331 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -11,7 +11,8 @@ import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:stadtbote/model/job.dart'; import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/popups/infos_popup.dart'; -import 'package:stadtbote/tools/session_info_update.dart'; +import 'package:stadtbote/tools/messages/job_received_message.dart'; +import 'package:stadtbote/tools/messages/session_info_update.dart'; import 'package:badges/badges.dart' as badges; import '../main.dart'; @@ -85,7 +86,7 @@ class _MainPageState extends State { void initState() { super.initState(); - _initBadges(); + _refreshBadges(); _initMessages(); } @@ -241,13 +242,25 @@ class _MainPageState extends State { }*/ _initMessages() { - BroadcastReceiver().subscribe(Constants.messageTopicStatusInfoUpdate, (statusInfoUpdate) { - widget._sidValueNotifier.value = statusInfoUpdate.status.sid; + BroadcastReceiver().subscribe(Constants.messageTopicStatusInfoUpdate, (statusInfoUpdateMessage) { + widget._sidValueNotifier.value = statusInfoUpdateMessage.status.sid; + }); + + BroadcastReceiver().subscribe(Constants.messageTopicJobReceived, (JobReceivedMessage jobReceivedMessage) { + _jobReceived(jobReceivedMessage.job); }); } - void _initBadges() async { + void _refreshBadges() async { _assignedJobsValueNotifier.value = await MyApp.isarInstance.jobs.filter().stateEqualTo(0).count(); _acceptedJobsValueNotifier.value = await MyApp.isarInstance.jobs.filter().stateEqualTo(1).count(); } + + void _jobReceived(Job job) { + _refreshBadges(); + + if (job.state == 0) { + Util.logInfo("test"); + } + } } diff --git a/lib/tools/constants.dart b/lib/tools/constants.dart index 9175459..15bfea5 100644 --- a/lib/tools/constants.dart +++ b/lib/tools/constants.dart @@ -7,6 +7,7 @@ class Constants { static const String messageTopicConnectionStatusChanged = "connection_status_changed"; static const String messageTopicSessionInfoUpdate = "status_info_updated"; static const String messageTopicStatusInfoUpdate = "session_info_updated"; + static const String messageTopicJobReceived = "job_received"; static const String messageTopicPushContentView = "push_content_view"; static const String messageTopicPopContentView = "pop_content_view"; static const String messageTopicReplaceContentView = "replace_content_view"; diff --git a/lib/tools/messages/job_received_message.dart b/lib/tools/messages/job_received_message.dart new file mode 100644 index 0000000..ffef52a --- /dev/null +++ b/lib/tools/messages/job_received_message.dart @@ -0,0 +1,7 @@ +import 'package:stadtbote/model/job.dart'; + +class JobReceivedMessage { + final Job job; + + JobReceivedMessage({required this.job}); +} \ No newline at end of file diff --git a/lib/tools/session_info_update.dart b/lib/tools/messages/session_info_update.dart similarity index 100% rename from lib/tools/session_info_update.dart rename to lib/tools/messages/session_info_update.dart diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 6238485..9964427 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -11,7 +11,8 @@ import 'package:stadtbote/model/device_object.dart'; import 'package:stadtbote/model/job.dart'; import 'package:stadtbote/model/start_session_message.dart'; import 'package:stadtbote/tools/connection_status.dart'; -import 'package:stadtbote/tools/session_info_update.dart'; +import 'package:stadtbote/tools/messages/job_received_message.dart'; +import 'package:stadtbote/tools/messages/session_info_update.dart'; import 'package:typed_data/typed_buffers.dart'; import 'package:http/http.dart' as http; import 'package:uuid/uuid.dart'; @@ -160,11 +161,13 @@ class MqttCore { void _jobMessageReceived(payloadData) async { for (var foundJobData in payloadData) { - var newJob = Job.fromJson(foundJobData); + Job newJob = Job.fromJson(foundJobData); await MyApp.isarInstance.writeTxn(() async { await MyApp.isarInstance.jobs.put(newJob); }); + + BroadcastReceiver().publish(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob)); } }