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

+106 -20
View File
@@ -1,5 +1,6 @@
import 'dart:async';
import 'package:dart_mq/dart_mq.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:isar/isar.dart';
@@ -8,7 +9,7 @@ import 'package:shared_map/shared_map.dart';
import 'package:stadtbote/messages/pop_content_view_message.dart';
import 'package:stadtbote/model/enqueued_message.dart';
import 'package:stadtbote/model/log_entry.dart';
import 'package:stadtbote/model/message.dart';
import 'package:stadtbote/model/chat_message.dart';
import 'package:stadtbote/model/pictures.dart';
import 'package:stadtbote/model/rank.dart';
import 'package:stadtbote/model/location_status.dart';
@@ -35,13 +36,32 @@ Future<void> main() async {
runZonedGuarded(() async {
WidgetsFlutterBinding.ensureInitialized();
MQClient.initialize();
MQClient.instance.declareQueue(Constants.messageTopicRemoveJob);
MQClient.instance.declareQueue(Constants.messageTopicPublishPayload);
MQClient.instance.declareQueue(Constants.messageTopicDisconnectClient);
MQClient.instance.declareQueue(Constants.messageTopicConnectClient);
MQClient.instance.declareQueue(Constants.messageTopicRequestConnectionStatus);
MQClient.instance.declareQueue(Constants.messageTopicConnectionStatusChanged);
MQClient.instance.declareQueue(Constants.messageTopicJobDeleted);
MQClient.instance.declareQueue(Constants.messageTopicRankingUpdated);
MQClient.instance.declareQueue(Constants.messageTopicSessionInfoUpdate);
MQClient.instance.declareQueue(Constants.messageTopicSessionStatusInfoUpdate);
MQClient.instance.declareQueue(Constants.messageTopicLocationStatusUpdated);
MQClient.instance.declareQueue(Constants.messageTopicPushContentView);
MQClient.instance.declareQueue(Constants.messageTopicPopContentView);
MQClient.instance.declareQueue(Constants.messageTopicReplaceContentView);
MQClient.instance.declareQueue(Constants.messageTopicJobReceived);
MQClient.instance.declareQueue(Constants.messageTopicMessageReceived);
MQClient.instance.declareQueue(Constants.messageTopicUpdateBadges);
final dir = await getApplicationDocumentsDirectory();
MyApp.isarInstance = await Isar.open([
SessionStatusSchema,
LocationStatusSchema,
JobSchema,
TaskInfoSchema,
MessageSchema,
ChatMessageSchema,
EnqueuedMessageSchema,
LogEntrySchema,
RankingSchema,
@@ -84,7 +104,7 @@ class MyApp extends StatefulWidget {
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
class _MyAppState extends State<MyApp> with ConsumerMixin {
final MqttCore mqttCore = MqttCore();
@override void initState() {
@@ -161,7 +181,7 @@ class Main extends StatefulWidget {
State<Main> createState() => _MainState();
}
class _MainState extends State<Main> with SingleTickerProviderStateMixin {
class _MainState extends State<Main> with SingleTickerProviderStateMixin, ProducerMixin, ConsumerMixin {
late ContentViewWidget _currentContent;
late WidgetStack<ContentViewWidget> contentStack = WidgetStack();
@@ -282,25 +302,75 @@ class _MainState extends State<Main> with SingleTickerProviderStateMixin {
}
void _initMessages() {
MessageService().unsubscribeAll(this);
MessageService().subscribe<ContentViewWidget>(Constants.messageTopicPushContentView, this, (ContentViewWidget widget) {
subscribe(
queueId: Constants.messageTopicPushContentView,
callback: (message) {
var widget = message.payload as ContentViewWidget;
_pushContentView(widget);
},
);
/*MessageService().subscribe<ContentViewWidget>(Constants.messageTopicPushContentView, this, (ContentViewWidget widget) {
_pushContentView(widget);
});
});*/
MessageService().subscribe<PopContentViewMessage>(Constants.messageTopicPopContentView, this, (PopContentViewMessage message) {
subscribe(
queueId: Constants.messageTopicPopContentView,
callback: (message) {
var popContentViewMessage = message.payload as PopContentViewMessage;
_popContentView(popContentViewMessage.count);
},
);
/*MessageService().subscribe<PopContentViewMessage>(Constants.messageTopicPopContentView, this, (PopContentViewMessage message) {
_popContentView(message.count);
});
});*/
MessageService().subscribe<ContentViewWidget>(Constants.messageTopicReplaceContentView, this, (ContentViewWidget widget) {
subscribe(
queueId: Constants.messageTopicReplaceContentView,
callback: (message) {
var widget = message.payload as ContentViewWidget;
_replaceContentView(widget);
},
);
/*MessageService().subscribe<ContentViewWidget>(Constants.messageTopicReplaceContentView, this, (ContentViewWidget widget) {
_replaceContentView(widget);
});
});*/
MessageService().subscribe<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, this, (ConnectionStatus connectionStatus) {
subscribe(
queueId: Constants.messageTopicConnectionStatusChanged,
callback: (message) {
var connectionStatus = message.payload as ConnectionStatus;
_connectionStatusChanged(connectionStatus);
},
);
/*MessageService().subscribe<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, this, (ConnectionStatus connectionStatus) {
_connectionStatusChanged(connectionStatus);
});
});*/
MessageService().subscribe<RemoveJobMessage>(Constants.messageTopicRemoveJob, this, (RemoveJobMessage job) async {
subscribe(
queueId: Constants.messageTopicRemoveJob,
callback: (message) async {
var removeJobMessage = message.payload as RemoveJobMessage;
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.jobs.where().filter().idEqualTo(removeJobMessage.id).deleteAll();
});
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicJobDeleted,
payload: JobDeletedMessage(id: removeJobMessage.id),
);
//await MessageService().publish<JobDeletedMessage>(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: job.id));
// TODO MESSAGING
sendMessage(
routingKey: Constants.messageTopicUpdateBadges,
payload: RefreshBadgesMessage,
);
//await MessageService().publish<RefreshBadgesMessage>(Constants.messageTopicUpdateBadges, arguments: RefreshBadgesMessage());
},
);
/*MessageService().subscribe<RemoveJobMessage>(Constants.messageTopicRemoveJob, this, (RemoveJobMessage job) async {
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.jobs.where().filter().idEqualTo(job.id).deleteAll();
});
@@ -308,17 +378,33 @@ class _MainState extends State<Main> with SingleTickerProviderStateMixin {
await MessageService().publish<JobDeletedMessage>(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: job.id));
await MessageService().publish<RefreshBadgesMessage>(Constants.messageTopicUpdateBadges, arguments: RefreshBadgesMessage());
});
});*/
MessageService().subscribe<JobReceivedMessage>(Constants.messageTopicJobReceived, this, (JobReceivedMessage jobReceivedMessage) async {
subscribe(
queueId: Constants.messageTopicJobReceived,
callback: (message) async {
var jobReceived = message.payload as JobReceivedMessage;
if (jobReceived.job.state == 0) {
await _jobMap!.put(jobReceived.job.id, jobReceived.job);
}
},
);
/*MessageService().subscribe<JobReceivedMessage>(Constants.messageTopicJobReceived, this, (JobReceivedMessage jobReceivedMessage) async {
if (jobReceivedMessage.job.state == 0) {
await _jobMap!.put(jobReceivedMessage.job.id, jobReceivedMessage.job);
}
});
});*/
MessageService().subscribe<JobDeletedMessage>(Constants.messageTopicJobDeleted, this, (JobDeletedMessage jobDeletedMessage) async {
subscribe(
queueId: Constants.messageTopicJobDeleted,
callback: (message) async {
var jobDeleted = message.payload as JobDeletedMessage;
await _jobMap!.remove(jobDeleted.id);
},
);
/*MessageService().subscribe<JobDeletedMessage>(Constants.messageTopicJobDeleted, this, (JobDeletedMessage jobDeletedMessage) async {
await _jobMap!.remove(jobDeletedMessage.id);
});
});*/
}
void _replaceContentView(ContentViewWidget widget) async {