Erweiterungen

This commit is contained in:
Sven committed 2024-11-14 10:56:36 +01:00
1 parent 96544ca924
commit def0f3fc2f
136 files changed
+4172 -499

No files matched your search

+141 -44
View File
@@ -1,3 +1,4 @@
import 'package:dart_mq/dart_mq.dart';
import 'package:flutter/material.dart';
import 'package:isar/isar.dart';
import 'package:mqtt5_client/mqtt5_client.dart';
@@ -10,7 +11,7 @@ import 'package:stadtbote/content_views/utils/content_view_widget.dart';
import 'package:stadtbote/main.dart';
import 'package:stadtbote/model/job.dart';
import 'package:stadtbote/model/location_status.dart';
import 'package:stadtbote/model/message.dart';
import 'package:stadtbote/model/chat_message.dart';
import 'package:stadtbote/model/session_status.dart';
import 'package:stadtbote/popups/infos_popup.dart';
import 'package:stadtbote/protocoll_messages/logout_message.dart';
@@ -42,7 +43,7 @@ class MainPage extends ContentViewWidget {
}
}
class _MainPageState extends State<MainPage> {
class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
final ValueNotifier<int> _assignedJobsValueNotifier = ValueNotifier<int>(0);
final ValueNotifier<int> _acceptedJobsValueNotifier = ValueNotifier<int>(0);
final ValueNotifier<int> _messagesValueNotifier = ValueNotifier<int>(0);
@@ -61,8 +62,6 @@ class _MainPageState extends State<MainPage> {
@override
void dispose() {
super.dispose();
_exitMessages();
}
@override
@@ -102,9 +101,15 @@ class _MainPageState extends State<MainPage> {
'Zugewiesene Aufträge',
image: Image.asset('assets/zugewiesene_auftraege.png', width: 30, height: 30),
() async => {
await MessageService()
.publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const AssignedJobsPage())
}),
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicPushContentView,
payload: const AssignedJobsPage(),
)
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const AssignedJobsPage())
}
),
);
},
),
@@ -136,9 +141,16 @@ class _MainPageState extends State<MainPage> {
'Angenommene Aufträge',
image: Image.asset('assets/angenommene_auftraege.png', width: 30, height: 30),
() async => {
await MessageService()
.publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const AcceptedJobsPage())
}));
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicPushContentView,
payload: const AcceptedJobsPage(),
)
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const AcceptedJobsPage())
}
)
);
},
),
),
@@ -149,9 +161,15 @@ class _MainPageState extends State<MainPage> {
'Erledigte Aufträge',
image: Image.asset('assets/erledigte_auftraege.png', width: 30, height: 30),
() async => {
await MessageService()
.publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const FinishedJobsPage())
}),
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicPushContentView,
payload: const FinishedJobsPage(),
)
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const FinishedJobsPage())
}
),
),
SizedBox(height: _loggedOut == true ? 0 : 20),
Visibility(
@@ -180,9 +198,16 @@ class _MainPageState extends State<MainPage> {
'Nachrichten',
image: Image.asset('assets/nachrichten.png', width: 30, height: 30),
() async => {
await MessageService()
.publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const MessagesPage())
}));
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicPushContentView,
payload: const MessagesPage(),
)
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const MessagesPage())
}
)
);
},
),
),
@@ -193,8 +218,12 @@ class _MainPageState extends State<MainPage> {
'Anfahrtsbereich',
image: Image.asset('assets/anfahrtsbereich.png', width: 30, height: 30),
() async => {
await MessageService()
.publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const ApproachAreaPage())
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicPushContentView,
payload: const ApproachAreaPage(),
)
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const ApproachAreaPage())
}),
),
SizedBox(height: _loggedOut == true ? 0 : 20),
@@ -226,31 +255,58 @@ class _MainPageState extends State<MainPage> {
}
_initMessages() {
MessageService().subscribe<JobReceivedMessage>(Constants.messageTopicJobReceived, this, (JobReceivedMessage jobReceivedMessage) {
subscribe(
queueId: Constants.messageTopicRemoveJob,
callback: (message) {
_refreshBadges();
},
);
subscribe(
queueId: Constants.messageTopicJobReceived,
callback: (message) {
_jobReceived((message.payload as JobReceivedMessage).job);
},
);
/*MessageService().subscribe<JobReceivedMessage>(Constants.messageTopicJobReceived, this, (JobReceivedMessage jobReceivedMessage) {
_jobReceived(jobReceivedMessage.job);
});
});*/
MessageService().subscribe<MessageReceivedMessage>(Constants.messageTopicMessageReceived, this, (MessageReceivedMessage mesage) {
subscribe(
queueId: Constants.messageTopicMessageReceived,
callback: (message) {
_refreshBadges();
},
);
/*MessageService().subscribe<MessageReceivedMessage>(Constants.messageTopicMessageReceived, this, (MessageReceivedMessage mesage) {
_refreshBadges();
});
});*/
MessageService().subscribe<JobDeletedMessage>(Constants.messageTopicJobDeleted, this, (JobDeletedMessage job) {
subscribe(
queueId: Constants.messageTopicJobDeleted,
callback: (message) {
_refreshBadges();
},
);
/*MessageService().subscribe<JobDeletedMessage>(Constants.messageTopicJobDeleted, this, (JobDeletedMessage job) {
_refreshBadges();
});
});*/
MessageService().subscribe<RefreshBadgesMessage>(Constants.messageTopicUpdateBadges, this, (RefreshBadgesMessage message) {
subscribe(
queueId: Constants.messageTopicUpdateBadges,
callback: (message) {
_refreshBadges();
},
);
/*MessageService().subscribe<RefreshBadgesMessage>(Constants.messageTopicUpdateBadges, this, (RefreshBadgesMessage message) {
_refreshBadges();
});
}
void _exitMessages() {
MessageService().unsubscribeAll(this);
});*/
}
void _refreshBadges() async {
_assignedJobsValueNotifier.value = await MyApp.isarInstance.jobs.filter().stateEqualTo(0).count();
_acceptedJobsValueNotifier.value = await MyApp.isarInstance.jobs.filter().stateEqualTo(1).count();
_messagesValueNotifier.value = await MyApp.isarInstance.messages.filter().readEqualTo(false).count();
_messagesValueNotifier.value = await MyApp.isarInstance.chatMessages.filter().readEqualTo(false).count();
}
void _jobReceived(Job job) {
@@ -261,7 +317,13 @@ class _MainPageState extends State<MainPage> {
if (!_loggedOut) {
showLogoutAlertDialog(context);
} else {
await MessageService().publish<ConnectClientMessage>(Constants.messageTopicConnectClient, arguments: ConnectClientMessage());
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicConnectClient,
payload: ConnectClientMessage(),
);
//await MessageService().publish<ConnectClientMessage>(Constants.messageTopicConnectClient, arguments: ConnectClientMessage());
_loggedOut = false;
@@ -281,12 +343,28 @@ class _MainPageState extends State<MainPage> {
_loggedOut = true;
await MessageService().publish<DisconnectClientMessage>(Constants.messageTopicDisconnectClient, arguments: DisconnectClientMessage());
Future.delayed(const Duration(seconds: 2), () async {
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicDisconnectClient,
payload: DisconnectClientMessage(),
);
Future.delayed(const Duration(seconds: 5), () async {
Navigator.of(context).pop();
//await MessageService().publish<DisconnectClientMessage>(Constants.messageTopicDisconnectClient, arguments: DisconnectClientMessage());
setState(() {});
Future.delayed(const Duration(seconds: 3), () async {
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicDisconnectClient,
payload: DisconnectClientMessage(),
);
//await MessageService().publish<DisconnectClientMessage>(Constants.messageTopicDisconnectClient, arguments: DisconnectClientMessage());
Navigator.of(MyApp.appNavigatorKey.currentContext!).pop();
setState(() {});
});
});
},
);
@@ -329,8 +407,13 @@ class _MainPageState extends State<MainPage> {
logoutMessage.pos!.acc = position.accuracy.toInt();
}
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload,
arguments: PublishPayloadMessage(topic: "logout", message: logoutMessage.toJson(), qos: MqttQos.exactlyOnce));
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicPublishPayload,
payload: PublishPayloadMessage(topic: "logout", message: logoutMessage.toJson(), qos: MqttQos.exactlyOnce),
);
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "logout", message: logoutMessage.toJson(), qos: MqttQos.exactlyOnce));
}
}
@@ -339,7 +422,7 @@ class _HeaderWidget extends StatefulWidget {
State<_HeaderWidget> createState() => _HeaderWidgetState();
}
class _HeaderWidgetState extends State<_HeaderWidget> {
class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
final ValueNotifier<String> _zipValueNotifier = ValueNotifier("-----");
final ValueNotifier<String> _zipRealValueNotifier = ValueNotifier("-----");
final ValueNotifier<String> _sidValueNotifier = ValueNotifier("-----");
@@ -498,13 +581,27 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
}
_initMessages() {
MessageService().subscribe<SessionStatusInfoUpdate>(Constants.messageTopicSessionStatusInfoUpdate, this, (sessionStatusInfoUpdateMessage) {
_updateHeader();
});
subscribe(
queueId: Constants.messageTopicSessionStatusInfoUpdate,
callback: (message) {
_updateHeader();
},
);
MessageService().subscribe<LocationStatusUpdate>(Constants.messageTopicLocationStatusUpdated, this, (statusInfoUpdateMessage) {
/*MessageService().subscribe<SessionStatusInfoUpdate>(Constants.messageTopicSessionStatusInfoUpdate, this, (sessionStatusInfoUpdateMessage) {
_updateHeader();
});
});*/
subscribe(
queueId: Constants.messageTopicLocationStatusUpdated,
callback: (message) {
_updateHeader();
},
);
/*MessageService().subscribe<LocationStatusUpdate>(Constants.messageTopicLocationStatusUpdated, this, (statusInfoUpdateMessage) {
_updateHeader();
});*/
}
_updateHeader() async {