This commit is contained in:
Sven committed 2024-03-26 13:35:20 +01:00
1 parent 880cdd65ff
commit 8586a23bfa
19 files changed
+179 -220

No files matched your search

+25 -27
View File
@@ -1,3 +1,5 @@
import 'dart:convert';
import 'package:expandable/expandable.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
@@ -6,11 +8,15 @@ import 'package:stadtbote/protocoll_messages/accept_job_message.dart';
import 'package:stadtbote/model/job.dart';
import 'package:stadtbote/protocoll_messages/fin_task_message.dart';
import 'package:stadtbote/tools/constants.dart';
import 'package:stadtbote/tools/message_service.dart';
import 'package:stadtbote/tools/messages/job_deleted_message.dart';
import 'package:stadtbote/tools/messages/job_received_message.dart';
import 'package:stadtbote/tools/messages/refresh_badges_message.dart';
import 'package:stadtbote/tools/mqtt_core.dart';
import 'package:stadtbote/tools/util.dart';
import 'package:badges/badges.dart' as badges;
Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs) async {
Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs, Function() onFinished) async {
var jobsSet = jobs.toSet();
await showDialog<void>(
@@ -18,8 +24,8 @@ Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs) async {
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () async {
MessageService().unsubscribe(Constants.messageTopicJobDeleted, jobsMap);
MessageService().unsubscribe(Constants.messageTopicJobReceived, jobsMap);
MessageService().unsubscribe(Constants.messageTopicJobDeleted, jobsSet);
MessageService().unsubscribe(Constants.messageTopicJobReceived, jobsSet);
Navigator.of(context).pop();
@@ -32,29 +38,27 @@ Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs) async {
shadowColor: Colors.transparent,
backgroundColor: Colors.white,
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
if (jobsMap.isEmpty) {
if (jobsSet.isEmpty) {
Navigator.of(context).pop();
onFinished();
}
MessageService().unsubscribe(Constants.messageTopicJobDeleted, jobsMap);
MessageService().unsubscribe(Constants.messageTopicJobReceived, jobsMap);
MessageService().unsubscribe(Constants.messageTopicJobDeleted, jobsSet);
MessageService().unsubscribe(Constants.messageTopicJobReceived, jobsSet);
MessageService().subscribe<JobDeletedMessage>(Constants.messageTopicJobDeleted, jobsMap, (jobDeletedMessage) async {
jobsMap.removeWhere((key, value) => key == jobDeletedMessage.jobId);
MessageService().subscribe<JobDeletedMessage>(Constants.messageTopicJobDeleted, jobsSet, (jobDeletedMessage) async {
jobsSet.removeWhere((value) => value.id == jobDeletedMessage.id);
if (context.mounted) {
setState(() {});
}
});
MessageService().subscribe<JobReceivedMessage>(Constants.messageTopicJobReceived, jobsMap, (jobdMessage) async {
if (jobsMap.containsKey(jobdMessage.job.id)) {
jobsMap.removeWhere((key, value) => key == jobdMessage.job.id);
}
MessageService().subscribe<JobReceivedMessage>(Constants.messageTopicJobReceived, jobsSet, (jobdMessage) async {
jobsSet.removeWhere((value) => value.id == jobdMessage.job.id);
jobsMap[jobdMessage.job.id] = jobdMessage.job;
jobsSet.add(jobdMessage.job);
if (context.mounted) {
setState(() {});
@@ -69,15 +73,9 @@ Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs) async {
height: 100,
padding: const EdgeInsets.all(5),
child: ListView.builder(
itemCount: jobsMap.length,
itemCount: jobsSet.length,
itemBuilder: (_, i) {
var job = jobsMap.values.toList()[i];
String remarkString = '';
for (var remark in job.rem) {
remarkString += '$remark\n';
}
remarkString = remarkString.trim();
var job = jobsSet.toList()[i];
return ExpandableNotifier(
child: ListTile(
@@ -161,7 +159,7 @@ Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs) async {
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(remarkString),
child: Text(job.rem),
),
),
],
@@ -175,7 +173,7 @@ Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs) async {
() {
_sendAnswer(job, !job.global ? 2 : 3);
jobsMap.removeWhere((key, value) => key == job.id);
jobsSet.removeWhere((value) => value.id == job.id);
setState(() {});
}),
@@ -185,7 +183,7 @@ Future<void> showAcceptJobsPopup(BuildContext context, List<Job> jobs) async {
child: getDefaultButton('Annehmen', () {
_sendAnswer(job, 1);
jobsMap.removeWhere((key, value) => key == job.id);
jobsSet.removeWhere((value) => value.id == job.id);
setState(() {});
}),
@@ -215,9 +213,9 @@ _sendAnswer(Job job, int item) {
message.track = Track();
message.track.time = DateTime.now().toUtc().toIso8601String();
message.track.pos = FinTaskPos();
message.track.pos.lat = currentPosition != null ? currentPosition.latitude : 0.0;
message.track.pos.long = currentPosition != null ? currentPosition.longitude : 0.0;
message.track.pos.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0;
message.track.pos!.lat = currentPosition != null ? currentPosition.latitude : 0.0;
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0;
MqttCore.instance.publishText("reaction", jsonEncode(message.toJson()));