Fehlerkorrekturen und Erweiterungen
This commit is contained in:
1 parent
81133905de
commit
080c5b22ef
11 files changed
+176
-88
No files matched your search
@@ -8,7 +8,10 @@ import 'package:stadtbote/main.dart';
|
||||
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/ExtendedStatefulBuilder.dart';
|
||||
import 'package:stadtbote/tools/constants.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/messages/remove_job_message.dart';
|
||||
import 'package:stadtbote/tools/util.dart';
|
||||
@@ -16,15 +19,98 @@ import 'package:badges/badges.dart' as badges;
|
||||
|
||||
import '../tools/messages/publish_payload_message.dart';
|
||||
|
||||
late bool _initTimer;
|
||||
late Timer _checkForNewJobsTimer;
|
||||
late Map<int, bool> _infoExpandedMap;
|
||||
|
||||
Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onFinished) async {
|
||||
_initTimer = true;
|
||||
_infoExpandedMap = {};
|
||||
|
||||
await showDialog<void>(
|
||||
ExtendendStatefulBuilder extendedStatefulBuilder;
|
||||
|
||||
return showDialog<void>(
|
||||
barrierDismissible: true,
|
||||
context: MyApp.appNavigatorKey.currentContext!,
|
||||
builder: (BuildContext context) {
|
||||
List<Widget> widgets = [];
|
||||
StateSetter? extendedStatefulBuilderStateSetter;
|
||||
|
||||
extendedStatefulBuilder = ExtendendStatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||
extendedStatefulBuilderStateSetter = setState;
|
||||
|
||||
return SizedBox(
|
||||
key: GlobalKey(),
|
||||
height: 400,
|
||||
width: MediaQuery.of(context).size.width * 1.2,
|
||||
child: Container(
|
||||
height: 400,
|
||||
padding: const EdgeInsets.all(5),
|
||||
child: FutureBuilder<List<Widget>>(
|
||||
future: _fetchJobWidgets(setState, onFinished, mapReference),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return Util.getWaitWidget(context);
|
||||
} else {
|
||||
return ListView(
|
||||
children: snapshot.requireData,
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
));
|
||||
});
|
||||
|
||||
extendedStatefulBuilder.subscribe(
|
||||
queueId: Constants.messageTopicJobReceived,
|
||||
callback: (message) {
|
||||
var jobReceivedMessage = message.payload as JobReceivedMessage;
|
||||
if (jobReceivedMessage.job.state == 0) {
|
||||
extendedStatefulBuilderStateSetter!(() {});
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
extendedStatefulBuilder.subscribe(
|
||||
queueId: Constants.messageTopicJobDeleted,
|
||||
callback: (message) {
|
||||
var jobDeletedMessage = message.payload as JobDeletedMessage;
|
||||
if (jobDeletedMessage.job.state == 0) {
|
||||
extendedStatefulBuilderStateSetter!(() {});
|
||||
}
|
||||
extendedStatefulBuilderStateSetter!(() {});
|
||||
},
|
||||
);
|
||||
|
||||
widgets.add(extendedStatefulBuilder);
|
||||
|
||||
widgets.add(getDefaultButton("Liste schliessen", () {
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobReceived);
|
||||
extendedStatefulBuilder.unsubscribe(queueId: Constants.messageTopicJobDeleted);
|
||||
|
||||
Navigator.pop(context);
|
||||
|
||||
onFinished();
|
||||
}));
|
||||
|
||||
return Material(
|
||||
color: Colors.transparent,
|
||||
child: Stack(
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(5),
|
||||
height: 480,
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: widgets,
|
||||
),
|
||||
))
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
/*await showDialog<void>(
|
||||
context: MyApp.appNavigatorKey.currentContext!,
|
||||
builder: (BuildContext context) {
|
||||
return WillPopScope(
|
||||
@@ -50,7 +136,7 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
||||
|
||||
return SizedBox(
|
||||
key: GlobalKey(),
|
||||
height: MediaQuery.of(context).size.height * 1,
|
||||
height: MediaQuery.of(context).size.height * 0.4,
|
||||
width: MediaQuery.of(context).size.width * 1.2,
|
||||
child: Container(
|
||||
height: 100,
|
||||
@@ -69,28 +155,28 @@ Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onF
|
||||
),
|
||||
));
|
||||
})));
|
||||
});
|
||||
});*/
|
||||
}
|
||||
|
||||
void _startTimer(BuildContext context, SharedMapReference mapReference, StateSetter setState, Function() onFinished) {
|
||||
/*void _startTimer(BuildContext context, SharedMapReference mapReference, StateSetter setState, Function() onFinished) {
|
||||
_checkForNewJobsTimer = Timer.periodic(const Duration(seconds: 5), (Timer t) async {
|
||||
var jobMap = SharedMap<int, Job>.fromSharedReference(mapReference);
|
||||
var jobMap = SharedMap<int, Job>.fromSharedReference(mapReference);
|
||||
|
||||
if (await jobMap.length() > 0) {
|
||||
setState(() { });
|
||||
} else {
|
||||
_stopTimer();
|
||||
if (await jobMap.length() > 0) {
|
||||
setState(() {});
|
||||
} else {
|
||||
_stopTimer();
|
||||
|
||||
Navigator.of(MyApp.appNavigatorKey.currentContext!).pop();
|
||||
Navigator.of(MyApp.appNavigatorKey.currentContext!).pop();
|
||||
|
||||
onFinished();
|
||||
}
|
||||
});
|
||||
}
|
||||
onFinished();
|
||||
}
|
||||
});
|
||||
}*/
|
||||
|
||||
void _stopTimer() {
|
||||
/*void _stopTimer() {
|
||||
_checkForNewJobsTimer.cancel();
|
||||
}
|
||||
}*/
|
||||
|
||||
Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFinished, SharedMapReference mapReference) async {
|
||||
List<Widget> widgets = [];
|
||||
@@ -208,10 +294,6 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
Expanded(
|
||||
child: getDefaultButton(!job.global ? 'Ablehnen' : 'Ignorieren', () {
|
||||
dialogState(() {
|
||||
if (jobMap.length() == 1) {
|
||||
_stopTimer();
|
||||
}
|
||||
|
||||
_sendAnswer(mapReference, job, !job.global ? 2 : 3);
|
||||
|
||||
jobMap.remove(job.id);
|
||||
@@ -222,12 +304,6 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
);
|
||||
|
||||
setState(() {});
|
||||
|
||||
if (jobMap.length() == 0) {
|
||||
Navigator.of(context).pop();
|
||||
|
||||
onFinished();
|
||||
}
|
||||
});
|
||||
}),
|
||||
),
|
||||
@@ -235,10 +311,6 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
Expanded(
|
||||
child: getDefaultButton('Annehmen', enabledTimerActive: false, () {
|
||||
dialogState(() {
|
||||
if (jobMap.length() == 1) {
|
||||
_stopTimer();
|
||||
}
|
||||
|
||||
_sendAnswer(mapReference, job, 1);
|
||||
|
||||
jobMap.remove(job.id);
|
||||
@@ -249,12 +321,6 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
);
|
||||
|
||||
setState(() {});
|
||||
|
||||
if (jobMap.length() == 0) {
|
||||
Navigator.of(context).pop();
|
||||
|
||||
onFinished();
|
||||
}
|
||||
});
|
||||
}),
|
||||
)
|
||||
@@ -286,19 +352,13 @@ _sendAnswer(SharedMapReference mapReference, Job job, int item) async {
|
||||
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
|
||||
message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0;
|
||||
|
||||
// TODO MESSAGING
|
||||
job.sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "reaction", message: message.toJson(), acknowledgeRequired: true),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "reaction", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
|
||||
// TODO MESSAGING
|
||||
job.sendMessage(
|
||||
routingKey: Constants.messageTopicUpdateBadges,
|
||||
payload: RefreshBadgesMessage(),
|
||||
);
|
||||
|
||||
//await MessageService().publish(Constants.messageTopicUpdateBadges, arguments: RefreshBadgesMessage());
|
||||
}
|
||||
Reference in new issue
Block a user