Erweiterungen
This commit is contained in:
1 parent
96544ca924
commit
def0f3fc2f
136 files changed
+4172
-499
No files matched your search
@@ -1,3 +1,4 @@
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:stadtbote/content_views/tour_list_page.dart';
|
||||
@@ -25,7 +26,7 @@ class AcceptedJobsPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _AcceptedJobsPageState extends State<AcceptedJobsPage> {
|
||||
class _AcceptedJobsPageState extends State<AcceptedJobsPage> with ProducerMixin {
|
||||
late List<Job> _jobs;
|
||||
|
||||
late bool _initCompleted = false;
|
||||
@@ -85,7 +86,7 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage> {
|
||||
children: <Widget>[
|
||||
Text(
|
||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(),
|
||||
style: TextStyle(backgroundColor: isJobInFuture(job) ? Colors.yellow : Colors.transparent),
|
||||
style: TextStyle(backgroundColor: isJobInFuture(job) ? Colors.red : Colors.transparent),
|
||||
textAlign: TextAlign.left,
|
||||
),
|
||||
Text(
|
||||
@@ -132,7 +133,13 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage> {
|
||||
}
|
||||
|
||||
void _clicked(Job job) async {
|
||||
await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourListPage(job: job));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPushContentView,
|
||||
payload: TourListPage(job: job),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourListPage(job: job));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +148,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -171,7 +178,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -194,7 +207,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:mqtt5_client/mqtt5_client.dart';
|
||||
@@ -30,7 +31,7 @@ class ApproachAreaPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _ApproachAreaPageState extends State<ApproachAreaPage> {
|
||||
class _ApproachAreaPageState extends State<ApproachAreaPage> with ProducerMixin{
|
||||
late Ranking? _ranking;
|
||||
|
||||
late bool _initCompleted = false;
|
||||
@@ -54,7 +55,8 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
|
||||
void deactivate() {
|
||||
super.deactivate();
|
||||
|
||||
MessageService().unsubscribe(Constants.messageTopicRankingUpdated, this);
|
||||
// TODO MESSAGING
|
||||
//MessageService().unsubscribe(Constants.messageTopicRankingUpdated, this);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -201,15 +203,27 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
|
||||
setPosMessage.track!.pos!.acc = position.accuracy.toInt();
|
||||
}
|
||||
|
||||
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "set_zip", message: setPosMessage.toJson(), qos: MqttQos.exactlyOnce));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "set_zip", message: setPosMessage.toJson(), qos: MqttQos.exactlyOnce),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "set_zip", message: setPosMessage.toJson(), qos: MqttQos.exactlyOnce));
|
||||
}
|
||||
|
||||
_initMessages() {
|
||||
MessageService().subscribe<RankingUpdated>(Constants.messageTopicRankingUpdated, this, (rankingUpdateMessage) async {
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
/*MessageService().subscribe<RankingUpdated>(Constants.messageTopicRankingUpdated, this, (rankingUpdateMessage) async {
|
||||
_ranking = await MyApp.isarInstance.rankings.where().findFirst();
|
||||
|
||||
setState(() {});
|
||||
});
|
||||
});*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +232,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -248,7 +262,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -271,7 +291,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:expandable/expandable.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
@@ -32,7 +33,7 @@ class AssignedJobsPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _AssignedJobsPageState extends State<AssignedJobsPage> {
|
||||
class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin {
|
||||
late bool _initCompleted = false;
|
||||
|
||||
List<Widget> _entries = [];
|
||||
@@ -112,7 +113,7 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> {
|
||||
Text(
|
||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(),
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(backgroundColor: isJobInFuture(job) ? Colors.yellow : Colors.white),
|
||||
style: TextStyle(backgroundColor: isJobInFuture(job) ? Colors.red : Colors.white),
|
||||
),
|
||||
Text('Auftragsnummer: ${job.id}'),
|
||||
Text(job.tours[0].comp),
|
||||
@@ -189,13 +190,25 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> {
|
||||
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
|
||||
message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0;
|
||||
|
||||
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "reaction", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "reaction", message: message.toJson(), qos: MqttQos.exactlyOnce),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "reaction", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.jobs.delete(job.id);
|
||||
});
|
||||
|
||||
await MessageService().publish<RefreshBadgesMessage>(Constants.messageTopicUpdateBadges, arguments: RefreshBadgesMessage());
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicUpdateBadges,
|
||||
payload: RefreshBadgesMessage(),
|
||||
);
|
||||
|
||||
//await MessageService().publish<RefreshBadgesMessage>(Constants.messageTopicUpdateBadges, arguments: RefreshBadgesMessage());
|
||||
|
||||
_entries = await _createListEntries();
|
||||
|
||||
@@ -210,7 +223,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -240,7 +253,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -263,7 +282,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:stadtbote/content_views/tour_list_page.dart';
|
||||
@@ -25,7 +26,7 @@ class FinishedJobsPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _FinishedJobsPageState extends State<FinishedJobsPage> {
|
||||
class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin {
|
||||
late List<Job> _jobs;
|
||||
|
||||
late bool _initCompleted = false;
|
||||
@@ -120,7 +121,13 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> {
|
||||
}
|
||||
|
||||
void _clicked(Job job) async {
|
||||
await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourListPage(job: job, readOnly: true,));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPushContentView,
|
||||
payload: TourListPage(job: job, readOnly: true),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourListPage(job: job, readOnly: true,));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +136,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -159,7 +166,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -182,7 +195,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPushContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_chat_ui/flutter_chat_ui.dart';
|
||||
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
|
||||
@@ -7,8 +8,8 @@ import 'package:mqtt5_client/mqtt5_client.dart';
|
||||
import 'package:stadtbote/content_views/utils/content_view_widget.dart';
|
||||
import 'package:stadtbote/main.dart';
|
||||
import 'package:stadtbote/messages/pop_content_view_message.dart';
|
||||
import 'package:stadtbote/model/message.dart' as sbmessage;
|
||||
import 'package:stadtbote/model/message.dart';
|
||||
import 'package:stadtbote/model/chat_message.dart' as sbmessage;
|
||||
import 'package:stadtbote/model/chat_message.dart';
|
||||
import 'package:stadtbote/model/session_status.dart';
|
||||
import 'package:stadtbote/tools/constants.dart';
|
||||
import 'package:stadtbote/tools/message_service.dart';
|
||||
@@ -30,7 +31,7 @@ class MessagesPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _MessagesPageState extends State<MessagesPage> {
|
||||
class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
|
||||
bool _initCompleted = false;
|
||||
|
||||
late String _sid;
|
||||
@@ -87,19 +88,25 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
void _handleSendPressed(types.PartialText text) async {
|
||||
var now = DateTime.now();
|
||||
|
||||
var message = sbmessage.Message();
|
||||
var message = sbmessage.ChatMessage();
|
||||
message.text = text.text;
|
||||
message.from = _sid;
|
||||
message.subj = '';
|
||||
message.time = now.toUtc().toIso8601String();
|
||||
message.read = true;
|
||||
message.id = await sbmessage.Message.getNextId();
|
||||
message.id = await sbmessage.ChatMessage.getNextId();
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.messages.put(message);
|
||||
await MyApp.isarInstance.chatMessages.put(message);
|
||||
});
|
||||
|
||||
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "message", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "message", message: message.toJson(), qos: MqttQos.exactlyOnce),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "message", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
|
||||
_messages.insert(0, types.TextMessage(
|
||||
author: _user,
|
||||
@@ -114,7 +121,7 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
Future<void> _fetchMessages() async {
|
||||
_messages.clear();
|
||||
|
||||
var messages = await MyApp.isarInstance.messages.where().findAll();
|
||||
var messages = await MyApp.isarInstance.chatMessages.where().findAll();
|
||||
for (var message in messages) {
|
||||
_messages.add(types.TextMessage(
|
||||
author: message.from == _sid ? _user : _central,
|
||||
@@ -127,7 +134,7 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
|
||||
message.read = true;
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.messages.put(message);
|
||||
await MyApp.isarInstance.chatMessages.put(message);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -166,7 +173,7 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
const SizedBox(width: 20),
|
||||
Expanded(
|
||||
child: getDefaultButton('Ja', () async => {
|
||||
await MyApp.isarInstance.writeTxn(() async => { await MyApp.isarInstance.messages.delete(int.parse(message.id))}),
|
||||
await MyApp.isarInstance.writeTxn(() async => { await MyApp.isarInstance.chatMessages.delete(int.parse(message.id))}),
|
||||
|
||||
_fetchMessages(),
|
||||
|
||||
@@ -192,7 +199,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -222,7 +229,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -245,7 +258,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
@@ -50,7 +51,7 @@ class TaskListPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _TaskListPageState extends State<TaskListPage> {
|
||||
class _TaskListPageState extends State<TaskListPage> with ProducerMixin {
|
||||
late bool _initCompleted = false;
|
||||
|
||||
late List<TaskInfo> _taskList;
|
||||
@@ -420,7 +421,13 @@ class _TaskListPageState extends State<TaskListPage> {
|
||||
|
||||
_finishTaskProcessing(taskInfo);
|
||||
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 2));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 2),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 2));
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -471,7 +478,13 @@ class _TaskListPageState extends State<TaskListPage> {
|
||||
message.task.pos = null;
|
||||
}
|
||||
|
||||
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "fin_task", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "fin_task", message: message.toJson(), qos: MqttQos.exactlyOnce),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "fin_task", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
}
|
||||
|
||||
FinTourTask _createAnswerHeader(TaskInfo taskInfo) {
|
||||
@@ -515,7 +528,13 @@ class _TaskListPageState extends State<TaskListPage> {
|
||||
}
|
||||
}
|
||||
|
||||
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "fin_tour", message: finTourMessage.toJson(), qos: MqttQos.exactlyOnce));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "fin_tour", message: finTourMessage.toJson(), qos: MqttQos.exactlyOnce),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "fin_tour", message: finTourMessage.toJson(), qos: MqttQos.exactlyOnce));
|
||||
|
||||
widget.tour.state = Constants.stateFinishedNotConfirmed;
|
||||
|
||||
@@ -540,7 +559,13 @@ class _TaskListPageState extends State<TaskListPage> {
|
||||
message.time = DateTime.now().millisecondsSinceEpoch;
|
||||
message.data = picture.data;
|
||||
|
||||
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "pic", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "pic", message: message.toJson(), qos: MqttQos.exactlyOnce),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "pic", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.pictures.delete(picture.id);
|
||||
@@ -575,7 +600,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -605,7 +630,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -628,7 +659,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:stadtbote/content_views/task_list_page.dart';
|
||||
import 'package:stadtbote/content_views/utils/content_view_widget.dart';
|
||||
@@ -30,7 +31,7 @@ class TourDetailsPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _TourDetailsPageState extends State<TourDetailsPage> {
|
||||
class _TourDetailsPageState extends State<TourDetailsPage> with ProducerMixin {
|
||||
late bool _initCompleted = false;
|
||||
|
||||
@override
|
||||
@@ -133,7 +134,13 @@ class _TourDetailsPageState extends State<TourDetailsPage> {
|
||||
const SizedBox(height: 10),
|
||||
getDefaultButton('Weiter', () async =>
|
||||
{
|
||||
await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TaskListPage(job: widget.job, tour: widget.tour, readOnly: widget.readOnly))
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPushContentView,
|
||||
payload: TaskListPage(job: widget.job, tour: widget.tour, readOnly: widget.readOnly),
|
||||
)
|
||||
|
||||
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TaskListPage(job: widget.job, tour: widget.tour, readOnly: widget.readOnly))
|
||||
}),
|
||||
],
|
||||
),
|
||||
@@ -146,7 +153,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -176,7 +183,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -199,7 +212,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:stadtbote/content_views/tour_details_page.dart';
|
||||
import 'package:stadtbote/content_views/utils/content_view_widget.dart';
|
||||
@@ -28,7 +29,7 @@ class TourListPage extends ContentViewWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _TourListPageState extends State<TourListPage> {
|
||||
class _TourListPageState extends State<TourListPage> with ProducerMixin {
|
||||
late List<JobTour> _tours;
|
||||
|
||||
late bool _initCompleted = false;
|
||||
@@ -198,7 +199,13 @@ class _TourListPageState extends State<TourListPage> {
|
||||
}
|
||||
|
||||
Future<void> _clicked(JobTour tour, bool readOnly) async {
|
||||
await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourDetailsPage(job: widget.job, tour: tour, readOnly: readOnly));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPushContentView,
|
||||
payload: TourDetailsPage(job: widget.job, tour: tour, readOnly: readOnly),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourDetailsPage(job: widget.job, tour: tour, readOnly: readOnly));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +214,7 @@ class _HeaderWidget extends StatefulWidget {
|
||||
State<_HeaderWidget> createState() => _HeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -237,7 +244,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
radius: 10,
|
||||
@@ -260,7 +273,13 @@ class _HeaderWidgetState extends State<_HeaderWidget> {
|
||||
child: FittedBox(
|
||||
child: GestureDetector(
|
||||
onTap: () async {
|
||||
await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicPopContentView,
|
||||
payload: PopContentViewMessage(count: 1),
|
||||
);
|
||||
|
||||
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
|
||||
},
|
||||
child: const CircleAvatar(
|
||||
backgroundColor: Constants.colorPrimary,
|
||||
|
||||
+106
-20
@@ -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 {
|
||||
|
||||
@@ -3,11 +3,11 @@ import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:stadtbote/main.dart';
|
||||
import 'package:stadtbote/tools/util.dart';
|
||||
|
||||
part 'message.g.dart';
|
||||
part 'chat_message.g.dart';
|
||||
|
||||
@collection
|
||||
@JsonSerializable()
|
||||
class Message {
|
||||
class ChatMessage {
|
||||
late Id id;
|
||||
|
||||
late String time;
|
||||
@@ -20,14 +20,14 @@ class Message {
|
||||
|
||||
late bool? read = false;
|
||||
|
||||
Message();
|
||||
ChatMessage();
|
||||
|
||||
factory Message.fromJson(Map<String, dynamic> json) => _$MessageFromJson(json);
|
||||
factory ChatMessage.fromJson(Map<String, dynamic> json) => _$ChatMessageFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$MessageToJson(this);
|
||||
Map<String, dynamic> toJson() => _$ChatMessageToJson(this);
|
||||
|
||||
static Future<Message> mergeFromJson(Map<String, dynamic> json) async {
|
||||
var availableMessage = await MyApp.isarInstance.messages.filter().idEqualTo(json["id"]).findFirst();
|
||||
static Future<ChatMessage> mergeFromJson(Map<String, dynamic> json) async {
|
||||
var availableMessage = await MyApp.isarInstance.chatMessages.filter().idEqualTo(json["id"]).findFirst();
|
||||
|
||||
if (availableMessage != null) {
|
||||
availableMessage.id = json["id"];
|
||||
@@ -38,7 +38,7 @@ class Message {
|
||||
|
||||
return availableMessage;
|
||||
} else {
|
||||
var message = Message.fromJson(json);
|
||||
var message = ChatMessage.fromJson(json);
|
||||
message.read = false;
|
||||
|
||||
return message;
|
||||
@@ -1,6 +1,6 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'message.dart';
|
||||
part of 'chat_message.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// IsarCollectionGenerator
|
||||
@@ -9,13 +9,13 @@ part of 'message.dart';
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types
|
||||
|
||||
extension GetMessageCollection on Isar {
|
||||
IsarCollection<Message> get messages => this.collection();
|
||||
extension GetChatMessageCollection on Isar {
|
||||
IsarCollection<ChatMessage> get chatMessages => this.collection();
|
||||
}
|
||||
|
||||
const MessageSchema = CollectionSchema(
|
||||
name: r'Message',
|
||||
id: 2463283977299753079,
|
||||
const ChatMessageSchema = CollectionSchema(
|
||||
name: r'ChatMessage',
|
||||
id: 35366979330584919,
|
||||
properties: {
|
||||
r'from': PropertySchema(
|
||||
id: 0,
|
||||
@@ -43,22 +43,22 @@ const MessageSchema = CollectionSchema(
|
||||
type: IsarType.string,
|
||||
)
|
||||
},
|
||||
estimateSize: _messageEstimateSize,
|
||||
serialize: _messageSerialize,
|
||||
deserialize: _messageDeserialize,
|
||||
deserializeProp: _messageDeserializeProp,
|
||||
estimateSize: _chatMessageEstimateSize,
|
||||
serialize: _chatMessageSerialize,
|
||||
deserialize: _chatMessageDeserialize,
|
||||
deserializeProp: _chatMessageDeserializeProp,
|
||||
idName: r'id',
|
||||
indexes: {},
|
||||
links: {},
|
||||
embeddedSchemas: {},
|
||||
getId: _messageGetId,
|
||||
getLinks: _messageGetLinks,
|
||||
attach: _messageAttach,
|
||||
getId: _chatMessageGetId,
|
||||
getLinks: _chatMessageGetLinks,
|
||||
attach: _chatMessageAttach,
|
||||
version: '3.1.0+1',
|
||||
);
|
||||
|
||||
int _messageEstimateSize(
|
||||
Message object,
|
||||
int _chatMessageEstimateSize(
|
||||
ChatMessage object,
|
||||
List<int> offsets,
|
||||
Map<Type, List<int>> allOffsets,
|
||||
) {
|
||||
@@ -70,8 +70,8 @@ int _messageEstimateSize(
|
||||
return bytesCount;
|
||||
}
|
||||
|
||||
void _messageSerialize(
|
||||
Message object,
|
||||
void _chatMessageSerialize(
|
||||
ChatMessage object,
|
||||
IsarWriter writer,
|
||||
List<int> offsets,
|
||||
Map<Type, List<int>> allOffsets,
|
||||
@@ -83,13 +83,13 @@ void _messageSerialize(
|
||||
writer.writeString(offsets[4], object.time);
|
||||
}
|
||||
|
||||
Message _messageDeserialize(
|
||||
ChatMessage _chatMessageDeserialize(
|
||||
Id id,
|
||||
IsarReader reader,
|
||||
List<int> offsets,
|
||||
Map<Type, List<int>> allOffsets,
|
||||
) {
|
||||
final object = Message();
|
||||
final object = ChatMessage();
|
||||
object.from = reader.readString(offsets[0]);
|
||||
object.id = id;
|
||||
object.read = reader.readBoolOrNull(offsets[1]);
|
||||
@@ -99,7 +99,7 @@ Message _messageDeserialize(
|
||||
return object;
|
||||
}
|
||||
|
||||
P _messageDeserializeProp<P>(
|
||||
P _chatMessageDeserializeProp<P>(
|
||||
IsarReader reader,
|
||||
int propertyId,
|
||||
int offset,
|
||||
@@ -121,28 +121,31 @@ P _messageDeserializeProp<P>(
|
||||
}
|
||||
}
|
||||
|
||||
Id _messageGetId(Message object) {
|
||||
Id _chatMessageGetId(ChatMessage object) {
|
||||
return object.id;
|
||||
}
|
||||
|
||||
List<IsarLinkBase<dynamic>> _messageGetLinks(Message object) {
|
||||
List<IsarLinkBase<dynamic>> _chatMessageGetLinks(ChatMessage object) {
|
||||
return [];
|
||||
}
|
||||
|
||||
void _messageAttach(IsarCollection<dynamic> col, Id id, Message object) {
|
||||
void _chatMessageAttach(
|
||||
IsarCollection<dynamic> col, Id id, ChatMessage object) {
|
||||
object.id = id;
|
||||
}
|
||||
|
||||
extension MessageQueryWhereSort on QueryBuilder<Message, Message, QWhere> {
|
||||
QueryBuilder<Message, Message, QAfterWhere> anyId() {
|
||||
extension ChatMessageQueryWhereSort
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QWhere> {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterWhere> anyId() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(const IdWhereClause.any());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension MessageQueryWhere on QueryBuilder<Message, Message, QWhereClause> {
|
||||
QueryBuilder<Message, Message, QAfterWhereClause> idEqualTo(Id id) {
|
||||
extension ChatMessageQueryWhere
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QWhereClause> {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterWhereClause> idEqualTo(Id id) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(IdWhereClause.between(
|
||||
lower: id,
|
||||
@@ -151,7 +154,8 @@ extension MessageQueryWhere on QueryBuilder<Message, Message, QWhereClause> {
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterWhereClause> idNotEqualTo(Id id) {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterWhereClause> idNotEqualTo(
|
||||
Id id) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
if (query.whereSort == Sort.asc) {
|
||||
return query
|
||||
@@ -173,7 +177,7 @@ extension MessageQueryWhere on QueryBuilder<Message, Message, QWhereClause> {
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterWhereClause> idGreaterThan(Id id,
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterWhereClause> idGreaterThan(Id id,
|
||||
{bool include = false}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(
|
||||
@@ -182,7 +186,7 @@ extension MessageQueryWhere on QueryBuilder<Message, Message, QWhereClause> {
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterWhereClause> idLessThan(Id id,
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterWhereClause> idLessThan(Id id,
|
||||
{bool include = false}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(
|
||||
@@ -191,7 +195,7 @@ extension MessageQueryWhere on QueryBuilder<Message, Message, QWhereClause> {
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterWhereClause> idBetween(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterWhereClause> idBetween(
|
||||
Id lowerId,
|
||||
Id upperId, {
|
||||
bool includeLower = true,
|
||||
@@ -208,9 +212,9 @@ extension MessageQueryWhere on QueryBuilder<Message, Message, QWhereClause> {
|
||||
}
|
||||
}
|
||||
|
||||
extension MessageQueryFilter
|
||||
on QueryBuilder<Message, Message, QFilterCondition> {
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromEqualTo(
|
||||
extension ChatMessageQueryFilter
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QFilterCondition> {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -223,7 +227,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromGreaterThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromGreaterThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -238,7 +242,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromLessThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromLessThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -253,7 +257,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromBetween(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromBetween(
|
||||
String lower,
|
||||
String upper, {
|
||||
bool includeLower = true,
|
||||
@@ -272,7 +276,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromStartsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -285,7 +289,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromEndsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -298,7 +302,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromContains(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromContains(
|
||||
String value,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -310,7 +314,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromMatches(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromMatches(
|
||||
String pattern,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -322,7 +326,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromIsEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> fromIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'from',
|
||||
@@ -331,7 +335,8 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> fromIsNotEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition>
|
||||
fromIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'from',
|
||||
@@ -340,7 +345,8 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> idEqualTo(Id value) {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> idEqualTo(
|
||||
Id value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'id',
|
||||
@@ -349,7 +355,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> idGreaterThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> idGreaterThan(
|
||||
Id value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
@@ -362,7 +368,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> idLessThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> idLessThan(
|
||||
Id value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
@@ -375,7 +381,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> idBetween(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> idBetween(
|
||||
Id lower,
|
||||
Id upper, {
|
||||
bool includeLower = true,
|
||||
@@ -392,7 +398,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> readIsNull() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> readIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
property: r'read',
|
||||
@@ -400,7 +406,8 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> readIsNotNull() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition>
|
||||
readIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||
property: r'read',
|
||||
@@ -408,7 +415,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> readEqualTo(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> readEqualTo(
|
||||
bool? value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
@@ -418,7 +425,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjEqualTo(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -431,7 +438,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjGreaterThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjGreaterThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -446,7 +453,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjLessThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjLessThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -461,7 +468,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjBetween(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjBetween(
|
||||
String lower,
|
||||
String upper, {
|
||||
bool includeLower = true,
|
||||
@@ -480,7 +487,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjStartsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -493,7 +500,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjEndsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -506,7 +513,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjContains(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjContains(
|
||||
String value,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -518,7 +525,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjMatches(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjMatches(
|
||||
String pattern,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -530,7 +537,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjIsEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> subjIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'subj',
|
||||
@@ -539,7 +546,8 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> subjIsNotEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition>
|
||||
subjIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'subj',
|
||||
@@ -548,7 +556,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textEqualTo(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -561,7 +569,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textGreaterThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textGreaterThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -576,7 +584,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textLessThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textLessThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -591,7 +599,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textBetween(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textBetween(
|
||||
String lower,
|
||||
String upper, {
|
||||
bool includeLower = true,
|
||||
@@ -610,7 +618,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textStartsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -623,7 +631,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textEndsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -636,7 +644,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textContains(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textContains(
|
||||
String value,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -648,7 +656,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textMatches(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textMatches(
|
||||
String pattern,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -660,7 +668,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textIsEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> textIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'text',
|
||||
@@ -669,7 +677,8 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textIsNotEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition>
|
||||
textIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'text',
|
||||
@@ -678,7 +687,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeEqualTo(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -691,7 +700,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeGreaterThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeGreaterThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -706,7 +715,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeLessThan(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeLessThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -721,7 +730,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeBetween(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeBetween(
|
||||
String lower,
|
||||
String upper, {
|
||||
bool includeLower = true,
|
||||
@@ -740,7 +749,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeStartsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -753,7 +762,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeEndsWith(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -766,7 +775,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeContains(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeContains(
|
||||
String value,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -778,7 +787,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeMatches(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeMatches(
|
||||
String pattern,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -790,7 +799,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeIsEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition> timeIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'time',
|
||||
@@ -799,7 +808,8 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeIsNotEmpty() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterFilterCondition>
|
||||
timeIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'time',
|
||||
@@ -809,179 +819,180 @@ extension MessageQueryFilter
|
||||
}
|
||||
}
|
||||
|
||||
extension MessageQueryObject
|
||||
on QueryBuilder<Message, Message, QFilterCondition> {}
|
||||
extension ChatMessageQueryObject
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QFilterCondition> {}
|
||||
|
||||
extension MessageQueryLinks
|
||||
on QueryBuilder<Message, Message, QFilterCondition> {}
|
||||
extension ChatMessageQueryLinks
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QFilterCondition> {}
|
||||
|
||||
extension MessageQuerySortBy on QueryBuilder<Message, Message, QSortBy> {
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByFrom() {
|
||||
extension ChatMessageQuerySortBy
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QSortBy> {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByFrom() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'from', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByFromDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByFromDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'from', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByRead() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByRead() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'read', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByReadDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByReadDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'read', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortBySubj() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortBySubj() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'subj', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortBySubjDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortBySubjDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'subj', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByText() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByText() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByTextDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByTextDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByTime() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByTime() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'time', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByTimeDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> sortByTimeDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'time', Sort.desc);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension MessageQuerySortThenBy
|
||||
on QueryBuilder<Message, Message, QSortThenBy> {
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByFrom() {
|
||||
extension ChatMessageQuerySortThenBy
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QSortThenBy> {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByFrom() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'from', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByFromDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByFromDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'from', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenById() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenById() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'id', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByIdDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByIdDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'id', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByRead() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByRead() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'read', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByReadDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByReadDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'read', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenBySubj() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenBySubj() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'subj', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenBySubjDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenBySubjDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'subj', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByText() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByText() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByTextDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByTextDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByTime() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByTime() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'time', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByTimeDesc() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QAfterSortBy> thenByTimeDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'time', Sort.desc);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension MessageQueryWhereDistinct
|
||||
on QueryBuilder<Message, Message, QDistinct> {
|
||||
QueryBuilder<Message, Message, QDistinct> distinctByFrom(
|
||||
extension ChatMessageQueryWhereDistinct
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QDistinct> {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QDistinct> distinctByFrom(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'from', caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QDistinct> distinctByRead() {
|
||||
QueryBuilder<ChatMessage, ChatMessage, QDistinct> distinctByRead() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'read');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QDistinct> distinctBySubj(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QDistinct> distinctBySubj(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'subj', caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QDistinct> distinctByText(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QDistinct> distinctByText(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'text', caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QDistinct> distinctByTime(
|
||||
QueryBuilder<ChatMessage, ChatMessage, QDistinct> distinctByTime(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'time', caseSensitive: caseSensitive);
|
||||
@@ -989,39 +1000,39 @@ extension MessageQueryWhereDistinct
|
||||
}
|
||||
}
|
||||
|
||||
extension MessageQueryProperty
|
||||
on QueryBuilder<Message, Message, QQueryProperty> {
|
||||
QueryBuilder<Message, int, QQueryOperations> idProperty() {
|
||||
extension ChatMessageQueryProperty
|
||||
on QueryBuilder<ChatMessage, ChatMessage, QQueryProperty> {
|
||||
QueryBuilder<ChatMessage, int, QQueryOperations> idProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'id');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, String, QQueryOperations> fromProperty() {
|
||||
QueryBuilder<ChatMessage, String, QQueryOperations> fromProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'from');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, bool?, QQueryOperations> readProperty() {
|
||||
QueryBuilder<ChatMessage, bool?, QQueryOperations> readProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'read');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, String, QQueryOperations> subjProperty() {
|
||||
QueryBuilder<ChatMessage, String, QQueryOperations> subjProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'subj');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, String, QQueryOperations> textProperty() {
|
||||
QueryBuilder<ChatMessage, String, QQueryOperations> textProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'text');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, String, QQueryOperations> timeProperty() {
|
||||
QueryBuilder<ChatMessage, String, QQueryOperations> timeProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'time');
|
||||
});
|
||||
@@ -1032,15 +1043,16 @@ extension MessageQueryProperty
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
Message _$MessageFromJson(Map<String, dynamic> json) => Message()
|
||||
..id = json['id'] as int
|
||||
ChatMessage _$ChatMessageFromJson(Map<String, dynamic> json) => ChatMessage()
|
||||
..id = (json['id'] as num).toInt()
|
||||
..time = json['time'] as String
|
||||
..from = json['from'] as String
|
||||
..subj = json['subj'] as String
|
||||
..text = json['text'] as String
|
||||
..read = json['read'] as bool?;
|
||||
|
||||
Map<String, dynamic> _$MessageToJson(Message instance) => <String, dynamic>{
|
||||
Map<String, dynamic> _$ChatMessageToJson(ChatMessage instance) =>
|
||||
<String, dynamic>{
|
||||
'id': instance.id,
|
||||
'time': instance.time,
|
||||
'from': instance.from,
|
||||
+2
-1
@@ -1,3 +1,4 @@
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:stadtbote/model/job_tour.dart';
|
||||
@@ -8,7 +9,7 @@ part 'job.g.dart';
|
||||
|
||||
@collection
|
||||
@JsonSerializable()
|
||||
class Job {
|
||||
class Job with ProducerMixin {
|
||||
late Id id;
|
||||
@JsonKey(name: 'ver')
|
||||
late String ver;
|
||||
|
||||
@@ -1546,16 +1546,16 @@ extension JobQueryProperty on QueryBuilder<Job, Job, QQueryProperty> {
|
||||
// **************************************************************************
|
||||
|
||||
Job _$JobFromJson(Map<String, dynamic> json) => Job()
|
||||
..id = json['id'] as int
|
||||
..id = (json['id'] as num).toInt()
|
||||
..ver = json['ver'] as String
|
||||
..state = json['state'] as int
|
||||
..state = (json['state'] as num).toInt()
|
||||
..crFilter = json['cr_filter'] as String?
|
||||
..ordertime = json['ordertime'] as String
|
||||
..offsWarn = json['offs_warn'] as int
|
||||
..offsWarn = (json['offs_warn'] as num).toInt()
|
||||
..global = json['global'] as bool
|
||||
..vhtId = json['vht_id'] as int
|
||||
..vhtId = (json['vht_id'] as num).toInt()
|
||||
..rem = json['rem'] as String
|
||||
..delayOrderTime = json['delayOrderTime'] as int
|
||||
..delayOrderTime = (json['delayOrderTime'] as num).toInt()
|
||||
..tours = (json['tours'] as List<dynamic>)
|
||||
.map((e) => JobTour.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
|
||||
@@ -1615,9 +1615,9 @@ extension JobTourQueryObject
|
||||
// **************************************************************************
|
||||
|
||||
JobTour _$JobTourFromJson(Map<String, dynamic> json) => JobTour()
|
||||
..id = json['id'] as int
|
||||
..sort = json['sort'] as int
|
||||
..state = json['state'] as int
|
||||
..id = (json['id'] as num).toInt()
|
||||
..sort = (json['sort'] as num).toInt()
|
||||
..state = (json['state'] as num).toInt()
|
||||
..mode = json['mode'] as String
|
||||
..comp = json['comp'] as String
|
||||
..person = json['person'] as String
|
||||
|
||||
@@ -835,7 +835,7 @@ extension LocationStatusQueryProperty
|
||||
|
||||
LocationStatus _$LocationStatusFromJson(Map<String, dynamic> json) =>
|
||||
LocationStatus()
|
||||
..id = json['id'] as int?
|
||||
..id = (json['id'] as num?)?.toInt()
|
||||
..zip = json['zip'] as String
|
||||
..area = json['area'] as String
|
||||
..zipReal = json['zip_real'] as String;
|
||||
|
||||
@@ -643,7 +643,7 @@ extension LogEntryQueryProperty
|
||||
// **************************************************************************
|
||||
|
||||
LogEntry _$LogEntryFromJson(Map<String, dynamic> json) => LogEntry()
|
||||
..id = json['id'] as int
|
||||
..id = (json['id'] as num).toInt()
|
||||
..time = DateTime.parse(json['time'] as String)
|
||||
..severity = $enumDecode(_$LogEntrySeverityEnumEnumMap, json['severity'])
|
||||
..text = json['text'] as String;
|
||||
|
||||
@@ -1240,7 +1240,7 @@ extension VehicleQueryObject
|
||||
// **************************************************************************
|
||||
|
||||
Ranking _$RankingFromJson(Map<String, dynamic> json) => Ranking()
|
||||
..id = json['id'] as int?
|
||||
..id = (json['id'] as num?)?.toInt()
|
||||
..ranks = (json['ranking'] as List<dynamic>)
|
||||
.map((e) => Rank.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
@@ -1251,7 +1251,7 @@ Map<String, dynamic> _$RankingToJson(Ranking instance) => <String, dynamic>{
|
||||
};
|
||||
|
||||
Rank _$RankFromJson(Map<String, dynamic> json) => Rank()
|
||||
..id = json['id'] as int
|
||||
..id = (json['id'] as num).toInt()
|
||||
..zip = json['zip'] as String
|
||||
..area = json['area'] as String?
|
||||
..vehicles = (json['vehicles'] as List<dynamic>)
|
||||
@@ -1266,9 +1266,9 @@ Map<String, dynamic> _$RankToJson(Rank instance) => <String, dynamic>{
|
||||
};
|
||||
|
||||
Vehicle _$VehicleFromJson(Map<String, dynamic> json) => Vehicle()
|
||||
..id = json['id'] as int
|
||||
..type = json['type'] as int
|
||||
..cnt = json['cnt'] as int?
|
||||
..id = (json['id'] as num).toInt()
|
||||
..type = (json['type'] as num).toInt()
|
||||
..cnt = (json['cnt'] as num?)?.toInt()
|
||||
..self = json['self'] as bool? ?? false;
|
||||
|
||||
Map<String, dynamic> _$VehicleToJson(Vehicle instance) => <String, dynamic>{
|
||||
|
||||
@@ -1507,12 +1507,12 @@ extension SessionStatusQueryProperty
|
||||
|
||||
SessionStatus _$SessionStatusFromJson(Map<String, dynamic> json) =>
|
||||
SessionStatus()
|
||||
..custId = json['cust_id'] as int
|
||||
..hqId = json['hq_id'] as int
|
||||
..usrId = json['usr_id'] as int
|
||||
..crId = json['cr_id'] as int
|
||||
..custId = (json['cust_id'] as num).toInt()
|
||||
..hqId = (json['hq_id'] as num).toInt()
|
||||
..usrId = (json['usr_id'] as num).toInt()
|
||||
..crId = (json['cr_id'] as num).toInt()
|
||||
..sid = json['sid'] as String
|
||||
..vhtId = json['vht_id'] as int
|
||||
..vhtId = (json['vht_id'] as num).toInt()
|
||||
..locZip = json['loc_zip'] as String
|
||||
..serverVersion = json['server_version'] as String
|
||||
..serverInstance = json['server_instance'] as String;
|
||||
|
||||
@@ -789,7 +789,7 @@ extension StatusPosQueryObject
|
||||
// **************************************************************************
|
||||
|
||||
Status _$StatusFromJson(Map<String, dynamic> json) => Status()
|
||||
..id = json['id'] as int?
|
||||
..id = (json['id'] as num?)?.toInt()
|
||||
..pos = StatusPos.fromJson(json['pos'] as Map<String, dynamic>);
|
||||
|
||||
Map<String, dynamic> _$StatusToJson(Status instance) => <String, dynamic>{
|
||||
|
||||
@@ -1456,19 +1456,19 @@ extension TourEntryQueryObject
|
||||
// **************************************************************************
|
||||
|
||||
TourTask _$TourTaskFromJson(Map<String, dynamic> json) => TourTask()
|
||||
..sId = json['s_id'] as int
|
||||
..type = json['type'] as int
|
||||
..sId = (json['s_id'] as num).toInt()
|
||||
..type = (json['type'] as num).toInt()
|
||||
..topic = json['topic'] as String
|
||||
..opt = json['opt'] as bool? ?? false
|
||||
..reenter = json['reenter'] as bool? ?? false
|
||||
..min = json['min'] as int?
|
||||
..max = json['max'] as int?
|
||||
..maxLen = json['max_len'] as int?
|
||||
..min = (json['min'] as num?)?.toInt()
|
||||
..max = (json['max'] as num?)?.toInt()
|
||||
..maxLen = (json['max_len'] as num?)?.toInt()
|
||||
..rt = json['rt'] as bool?
|
||||
..track = json['track'] as bool?
|
||||
..txt = json['txt'] as String?
|
||||
..taskArrival = json['task_arrival'] as int?
|
||||
..taskFinWork = json['task_fin_work'] as int?
|
||||
..taskArrival = (json['task_arrival'] as num?)?.toInt()
|
||||
..taskFinWork = (json['task_fin_work'] as num?)?.toInt()
|
||||
..entries = (json['entries'] as List<dynamic>?)
|
||||
?.map((e) => TourEntry.fromJson(e as Map<String, dynamic>))
|
||||
.toList();
|
||||
@@ -1491,7 +1491,7 @@ Map<String, dynamic> _$TourTaskToJson(TourTask instance) => <String, dynamic>{
|
||||
};
|
||||
|
||||
TourEntry _$TourEntryFromJson(Map<String, dynamic> json) => TourEntry()
|
||||
..code = json['code'] as int
|
||||
..code = (json['code'] as num).toInt()
|
||||
..text = json['text'] as String
|
||||
..queryRemark = json['query_remark'] as bool;
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'dart:async';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:expandable/expandable.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -21,12 +20,10 @@ import '../tools/messages/publish_payload_message.dart';
|
||||
|
||||
late bool _initTimer;
|
||||
late Timer _checkForNewJobsTimer;
|
||||
late Map<int, DateTime> _firstDelayTimeMap;
|
||||
late Map<int, bool> _infoExpandedMap;
|
||||
|
||||
Future<void> showAcceptJobsPopup(SharedMapReference mapReference, Function() onFinished) async {
|
||||
_initTimer = true;
|
||||
_firstDelayTimeMap = {};
|
||||
_infoExpandedMap = {};
|
||||
|
||||
await showDialog<void>(
|
||||
@@ -97,7 +94,6 @@ void _stopTimer() {
|
||||
_checkForNewJobsTimer.cancel();
|
||||
}
|
||||
|
||||
|
||||
Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFinished, SharedMapReference mapReference) async {
|
||||
List<Widget> widgets = [];
|
||||
|
||||
@@ -107,15 +103,6 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
for (var jobEntry in entries) {
|
||||
var job = jobEntry.value;
|
||||
|
||||
int enableDelay = job.delayOrderTime;
|
||||
if (!_firstDelayTimeMap.containsKey(job.id)) {
|
||||
_firstDelayTimeMap[job.id] = DateTime.now();
|
||||
} else {
|
||||
DateTime firstDisplayTime = _firstDelayTimeMap[job.id]!;
|
||||
int diffInSeconds = DateTime.now().difference(firstDisplayTime).inSeconds;
|
||||
enableDelay = min(0, diffInSeconds);
|
||||
}
|
||||
|
||||
ExpandableController controller = ExpandableController();
|
||||
controller.expanded = _infoExpandedMap[job.id] != null ? _infoExpandedMap[job.id]! : false;
|
||||
|
||||
@@ -165,7 +152,7 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
child: Text(
|
||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(),
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(backgroundColor: isJobInFuture(job) ? Colors.yellow : Colors.transparent),
|
||||
style: TextStyle(backgroundColor: isJobInFuture(job) ? Colors.red : Colors.transparent),
|
||||
),
|
||||
),
|
||||
SizedBox(width: double.infinity, child: Text('Auftragsnummer: ${job.id}', textAlign: TextAlign.left)),
|
||||
@@ -231,7 +218,10 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
|
||||
jobMap.remove(job.id);
|
||||
|
||||
MessageService().publish<RemoveJobMessage>(Constants.messageTopicRemoveJob, arguments: RemoveJobMessage(id: job.id));
|
||||
job.sendMessage(
|
||||
routingKey: Constants.messageTopicRemoveJob,
|
||||
payload: RemoveJobMessage(id: job.id),
|
||||
);
|
||||
|
||||
setState(() {});
|
||||
|
||||
@@ -245,7 +235,7 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
),
|
||||
const SizedBox(width: 20),
|
||||
Expanded(
|
||||
child: getDefaultButton('Annehmen', enabledTimerActive: enableDelay > 0, enabledTimerDelay: enableDelay, () {
|
||||
child: getDefaultButton('Annehmen', enabledTimerActive: false, () {
|
||||
dialogState(() {
|
||||
if (jobMap.length() == 1) {
|
||||
_stopTimer();
|
||||
@@ -255,7 +245,10 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
||||
|
||||
jobMap.remove(job.id);
|
||||
|
||||
MessageService().publish<RemoveJobMessage>(Constants.messageTopicRemoveJob, arguments: RemoveJobMessage(id: job.id));
|
||||
job.sendMessage(
|
||||
routingKey: Constants.messageTopicRemoveJob,
|
||||
payload: RemoveJobMessage(id: job.id),
|
||||
);
|
||||
|
||||
setState(() {});
|
||||
|
||||
@@ -295,8 +288,19 @@ _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;
|
||||
|
||||
await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "reaction", message: message.toJson(), qos: MqttQos.exactlyOnce));
|
||||
// TODO MESSAGING
|
||||
job.sendMessage(
|
||||
routingKey: Constants.messageTopicPublishPayload,
|
||||
payload: PublishPayloadMessage(topic: "reaction", message: message.toJson(), qos: MqttQos.exactlyOnce),
|
||||
);
|
||||
|
||||
await MessageService().publish(Constants.messageTopicUpdateBadges, arguments: RefreshBadgesMessage());
|
||||
//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());
|
||||
}
|
||||
@@ -14,12 +14,12 @@ void showInfosPopup(SessionStatus? status) async {
|
||||
late String connectedString = "Bitte warten...";
|
||||
|
||||
Future.delayed(const Duration(seconds: 2), () async {
|
||||
await MessageService().publish<RequestConnectionStatusMessage>(Constants.messageTopicRequestConnectionStatus, arguments: RequestConnectionStatusMessage());
|
||||
//await MessageService().publish<RequestConnectionStatusMessage>(Constants.messageTopicRequestConnectionStatus, arguments: RequestConnectionStatusMessage());
|
||||
});
|
||||
|
||||
void unsubscribeMessages() {
|
||||
MessageService().unsubscribe(Constants.messageTopicCurrentConnectionStatus, version);
|
||||
MessageService().unsubscribe(Constants.messageTopicConnectionStatusChanged, version);
|
||||
//MessageService().unsubscribe(Constants.messageTopicCurrentConnectionStatus, version);
|
||||
//MessageService().unsubscribe(Constants.messageTopicConnectionStatusChanged, version);
|
||||
}
|
||||
|
||||
await showDialog(
|
||||
@@ -69,7 +69,7 @@ void showInfosPopup(SessionStatus? status) async {
|
||||
text += "Keine Informationen gefunden";
|
||||
}
|
||||
|
||||
MessageService().subscribe<CurrentConnectionStatusMessage>(Constants.messageTopicCurrentConnectionStatus, version,
|
||||
/*MessageService().subscribe<CurrentConnectionStatusMessage>(Constants.messageTopicCurrentConnectionStatus, version,
|
||||
(CurrentConnectionStatusMessage currentConnectionStatusMessage) async {
|
||||
connectedString = currentConnectionStatusMessage.state ? "Verbunden" : "NICHT verbunden";
|
||||
|
||||
@@ -81,7 +81,7 @@ void showInfosPopup(SessionStatus? status) async {
|
||||
connectedString = connectionStatus.status == ConnectionStatusEnum.connected ? "Verbunden" : "NICHT verbunden";
|
||||
|
||||
if (context.mounted) setState(() {});
|
||||
});
|
||||
});*/
|
||||
|
||||
return SizedBox(
|
||||
key: GlobalKey(),
|
||||
|
||||
@@ -7,9 +7,9 @@ part of 'accept_job_message.dart';
|
||||
// **************************************************************************
|
||||
|
||||
Reaction _$ReactionFromJson(Map<String, dynamic> json) => Reaction()
|
||||
..id = json['id'] as int
|
||||
..id = (json['id'] as num).toInt()
|
||||
..ver = json['ver'] as String
|
||||
..item = json['item'] as int
|
||||
..item = (json['item'] as num).toInt()
|
||||
..track = Track.fromJson(json['track'] as Map<String, dynamic>);
|
||||
|
||||
Map<String, dynamic> _$ReactionToJson(Reaction instance) => <String, dynamic>{
|
||||
|
||||
@@ -19,10 +19,10 @@ Map<String, dynamic> _$AcknowledgeJobToJson(AcknowledgeJob instance) =>
|
||||
AcknowledgeJobReceived _$AcknowledgeJobReceivedFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
AcknowledgeJobReceived()
|
||||
..id = json['id'] as int
|
||||
..state = json['state'] as int
|
||||
..id = (json['id'] as num).toInt()
|
||||
..state = (json['state'] as num).toInt()
|
||||
..ver = json['ver'] as String
|
||||
..utc = json['utc'] as int;
|
||||
..utc = (json['utc'] as num).toInt();
|
||||
|
||||
Map<String, dynamic> _$AcknowledgeJobReceivedToJson(
|
||||
AcknowledgeJobReceived instance) =>
|
||||
|
||||
@@ -9,7 +9,7 @@ part of 'bootstrap_request.dart';
|
||||
BootstrapRequest _$BootstrapRequestFromJson(Map<String, dynamic> json) =>
|
||||
BootstrapRequest()
|
||||
..app = json['app'] as String
|
||||
..ver = json['ver'] as int
|
||||
..ver = (json['ver'] as num).toInt()
|
||||
..mqttClientId = json['mqttClientId'] as String
|
||||
..deviceObject =
|
||||
DeviceObject.fromJson(json['device'] as Map<String, dynamic>);
|
||||
|
||||
@@ -12,7 +12,7 @@ BootstrapResponse _$BootstrapResponseFromJson(Map<String, dynamic> json) =>
|
||||
..id = json['id'] as String
|
||||
..toServer = json['to_server'] as String
|
||||
..fromServer = json['from_server'] as String
|
||||
..status = json['status'] as int
|
||||
..status = (json['status'] as num).toInt()
|
||||
..message = json['message'] as String;
|
||||
|
||||
Map<String, dynamic> _$BootstrapResponseToJson(BootstrapResponse instance) =>
|
||||
|
||||
@@ -283,7 +283,7 @@ Map<String, dynamic> _$FinTaskMessageToJson(FinTaskMessage instance) =>
|
||||
};
|
||||
|
||||
FinTask _$FinTaskFromJson(Map<String, dynamic> json) => FinTask()
|
||||
..trId = json['tr_id'] as int
|
||||
..trId = (json['tr_id'] as num).toInt()
|
||||
..task = Task.fromJson(json['task'] as Map<String, dynamic>);
|
||||
|
||||
Map<String, dynamic> _$FinTaskToJson(FinTask instance) => <String, dynamic>{
|
||||
@@ -292,7 +292,7 @@ Map<String, dynamic> _$FinTaskToJson(FinTask instance) => <String, dynamic>{
|
||||
};
|
||||
|
||||
Task _$TaskFromJson(Map<String, dynamic> json) => Task()
|
||||
..sId = json['s_id'] as int
|
||||
..sId = (json['s_id'] as num).toInt()
|
||||
..time = json['time'] as String
|
||||
..pos = json['pos'] == null
|
||||
? null
|
||||
@@ -307,7 +307,7 @@ Map<String, dynamic> _$TaskToJson(Task instance) => <String, dynamic>{
|
||||
FinTaskPos _$FinTaskPosFromJson(Map<String, dynamic> json) => FinTaskPos()
|
||||
..lat = (json['lat'] as num).toDouble()
|
||||
..long = (json['long'] as num).toDouble()
|
||||
..acc = json['acc'] as int;
|
||||
..acc = (json['acc'] as num).toInt();
|
||||
|
||||
Map<String, dynamic> _$FinTaskPosToJson(FinTaskPos instance) =>
|
||||
<String, dynamic>{
|
||||
|
||||
@@ -16,7 +16,7 @@ Map<String, dynamic> _$FinTourMessageToJson(FinTourMessage instance) =>
|
||||
};
|
||||
|
||||
FinTour _$FinTourFromJson(Map<String, dynamic> json) => FinTour()
|
||||
..trId = json['tr_id'] as int
|
||||
..trId = (json['tr_id'] as num).toInt()
|
||||
..com = json['com'] as String
|
||||
..track = json['track'] == null
|
||||
? null
|
||||
@@ -33,10 +33,10 @@ Map<String, dynamic> _$FinTourToJson(FinTour instance) => <String, dynamic>{
|
||||
};
|
||||
|
||||
FinTourTask _$FinTourTaskFromJson(Map<String, dynamic> json) => FinTourTask()
|
||||
..sId = json['s_id'] as int
|
||||
..sId = (json['s_id'] as num).toInt()
|
||||
..time = json['time'] as String
|
||||
..val = json['val'] as String?
|
||||
..code = json['code'] as int?
|
||||
..code = (json['code'] as num?)?.toInt()
|
||||
..sign = json['sign'] as String?
|
||||
..codes = (json['codes'] as List<dynamic>?)?.map((e) => e as String).toList()
|
||||
..pos = json['pos'] == null
|
||||
|
||||
@@ -7,7 +7,7 @@ part of 'job_del_message.dart';
|
||||
// **************************************************************************
|
||||
|
||||
JobDelMessage _$JobDelMessageFromJson(Map<String, dynamic> json) =>
|
||||
JobDelMessage()..id = json['id'] as int;
|
||||
JobDelMessage()..id = (json['id'] as num).toInt();
|
||||
|
||||
Map<String, dynamic> _$JobDelMessageToJson(JobDelMessage instance) =>
|
||||
<String, dynamic>{
|
||||
|
||||
@@ -23,7 +23,7 @@ LogoutMessagePosition _$LogoutMessagePositionFromJson(
|
||||
..time = json['time'] as String
|
||||
..lat = (json['lat'] as num).toDouble()
|
||||
..long = (json['long'] as num).toDouble()
|
||||
..acc = json['acc'] as int;
|
||||
..acc = (json['acc'] as num).toInt();
|
||||
|
||||
Map<String, dynamic> _$LogoutMessagePositionToJson(
|
||||
LogoutMessagePosition instance) =>
|
||||
|
||||
@@ -7,9 +7,9 @@ part of 'pic_message.dart';
|
||||
// **************************************************************************
|
||||
|
||||
PicData _$PicDataFromJson(Map<String, dynamic> json) => PicData()
|
||||
..trId = json['tr_id'] as int
|
||||
..num = json['num'] as int
|
||||
..time = json['time'] as int
|
||||
..trId = (json['tr_id'] as num).toInt()
|
||||
..num = (json['num'] as num).toInt()
|
||||
..time = (json['time'] as num).toInt()
|
||||
..data = json['data'] as String;
|
||||
|
||||
Map<String, dynamic> _$PicDataToJson(PicData instance) => <String, dynamic>{
|
||||
|
||||
@@ -8,7 +8,7 @@ part of 'sync_jobs_message.dart';
|
||||
|
||||
SyncJobsMessage _$SyncJobsMessageFromJson(Map<String, dynamic> json) =>
|
||||
SyncJobsMessage()
|
||||
..utcUnixTime = json['utc_unix_time'] as int
|
||||
..utcUnixTime = (json['utc_unix_time'] as num).toInt()
|
||||
..sync =
|
||||
SyncJobMessageSync.fromJson(json['sync'] as Map<String, dynamic>);
|
||||
|
||||
@@ -31,9 +31,9 @@ Map<String, dynamic> _$SyncJobMessageSyncToJson(SyncJobMessageSync instance) =>
|
||||
|
||||
SyncJobMessageJob _$SyncJobMessageJobFromJson(Map<String, dynamic> json) =>
|
||||
SyncJobMessageJob()
|
||||
..id = json['id'] as int
|
||||
..id = (json['id'] as num).toInt()
|
||||
..ver = json['ver'] as String
|
||||
..state = json['state'] as int;
|
||||
..state = (json['state'] as num).toInt();
|
||||
|
||||
Map<String, dynamic> _$SyncJobMessageJobToJson(SyncJobMessageJob instance) =>
|
||||
<String, dynamic>{
|
||||
|
||||
@@ -11,7 +11,7 @@ TrackPosition _$TrackPositionFromJson(Map<String, dynamic> json) =>
|
||||
..time = json['time'] as String
|
||||
..lat = (json['lat'] as num).toDouble()
|
||||
..long = (json['long'] as num).toDouble()
|
||||
..acc = json['acc'] as int;
|
||||
..acc = (json['acc'] as num).toInt();
|
||||
|
||||
Map<String, dynamic> _$TrackPositionToJson(TrackPosition instance) =>
|
||||
<String, dynamic>{
|
||||
|
||||
@@ -8,7 +8,7 @@ part of 'track_station_message.dart';
|
||||
|
||||
TrackStationMessage _$TrackStationMessageFromJson(Map<String, dynamic> json) =>
|
||||
TrackStationMessage()
|
||||
..sid = json['s_id'] as int
|
||||
..sid = (json['s_id'] as num).toInt()
|
||||
..time = json['time'] as String
|
||||
..pos = json['pos'] == null
|
||||
? null
|
||||
|
||||
@@ -803,7 +803,7 @@ Map<String, dynamic> _$ZipTrackToJson(ZipTrack instance) => <String, dynamic>{
|
||||
ZipTrackPos _$ZipTrackPosFromJson(Map<String, dynamic> json) => ZipTrackPos()
|
||||
..lat = (json['lat'] as num).toDouble()
|
||||
..long = (json['long'] as num).toDouble()
|
||||
..acc = json['acc'] as int;
|
||||
..acc = (json['acc'] as num).toInt();
|
||||
|
||||
Map<String, dynamic> _$ZipTrackPosToJson(ZipTrackPos instance) =>
|
||||
<String, dynamic>{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'dart:async';
|
||||
|
||||
typedef EventHandler<T> = void Function(T args);
|
||||
//typedef EventHandler<T> = void Function(T args);
|
||||
|
||||
class _MapEntry {
|
||||
/*class _MapEntry {
|
||||
late dynamic owner;
|
||||
|
||||
late dynamic handler;
|
||||
@@ -75,4 +75,4 @@ class MessageService {
|
||||
|
||||
await completer.future;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:stadtbote/model/message.dart';
|
||||
import 'package:stadtbote/model/chat_message.dart';
|
||||
|
||||
class MessageReceivedMessage {
|
||||
final Message message;
|
||||
final ChatMessage message;
|
||||
|
||||
MessageReceivedMessage({required this.message});
|
||||
}
|
||||
+145
-32
@@ -3,6 +3,7 @@ import 'dart:convert';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:archive/archive.dart';
|
||||
import 'package:dart_mq/dart_mq.dart';
|
||||
import 'package:device_info_plus/device_info_plus.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:isar/isar.dart';
|
||||
@@ -11,7 +12,7 @@ import 'package:mqtt5_client/mqtt5_server_client.dart';
|
||||
import 'package:stadtbote/model/enqueued_message.dart';
|
||||
import 'package:stadtbote/model/job.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/location_status.dart';
|
||||
import 'package:stadtbote/model/rank.dart';
|
||||
import 'package:stadtbote/model/status.dart';
|
||||
@@ -52,7 +53,7 @@ import 'util.dart';
|
||||
|
||||
enum ConnectionStateEnum { notConnected, connected }
|
||||
|
||||
class MqttCore {
|
||||
class MqttCore with ProducerMixin, ConsumerMixin {
|
||||
late ConnectionStateEnum connectionState = ConnectionStateEnum.notConnected;
|
||||
|
||||
late bool _disconnectInProgress = false;
|
||||
@@ -80,7 +81,13 @@ class MqttCore {
|
||||
}
|
||||
|
||||
_disconnectMqttClient() async {
|
||||
await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicConnectionStatusChanged,
|
||||
payload: ConnectionStatus(status: ConnectionStatusEnum.notConnected),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
|
||||
_disconnectInProgress = true;
|
||||
|
||||
@@ -131,12 +138,24 @@ class MqttCore {
|
||||
} else {
|
||||
Util.logInfo('Verbindung zum MQTT-Broker fehlgeschlagen!');
|
||||
|
||||
await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicConnectionStatusChanged,
|
||||
payload: ConnectionStatus(status: ConnectionStatusEnum.notConnected),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
}
|
||||
} catch (ex) {
|
||||
Util.logInfo('Verbindung zum MQTT-Broker fehlgeschlagen!: $ex');
|
||||
|
||||
await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicConnectionStatusChanged,
|
||||
payload: ConnectionStatus(status: ConnectionStatusEnum.notConnected),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +269,13 @@ class MqttCore {
|
||||
|
||||
Util.logInfo('subscribed to topic: $fromServerTopic');
|
||||
|
||||
await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.connected));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicConnectionStatusChanged,
|
||||
payload: ConnectionStatus(status: ConnectionStatusEnum.connected),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.connected));
|
||||
}
|
||||
|
||||
void _sessionMessageReceived(payloadData) async {
|
||||
@@ -267,7 +292,13 @@ class MqttCore {
|
||||
await MyApp.isarInstance.sessionStatus.put(sessionStatusMessage);
|
||||
});
|
||||
|
||||
await MessageService().publish<SessionStatusInfoUpdate>(Constants.messageTopicSessionStatusInfoUpdate, arguments: SessionStatusInfoUpdate(status: sessionStatusMessage));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicSessionStatusInfoUpdate,
|
||||
payload: SessionStatusInfoUpdate(status: sessionStatusMessage),
|
||||
);
|
||||
|
||||
//await MessageService().publish<SessionStatusInfoUpdate>(Constants.messageTopicSessionStatusInfoUpdate, arguments: SessionStatusInfoUpdate(status: sessionStatusMessage));
|
||||
|
||||
_startTrackTimer();
|
||||
}
|
||||
@@ -280,7 +311,13 @@ class MqttCore {
|
||||
await MyApp.isarInstance.status.put(statusMessage);
|
||||
});
|
||||
|
||||
await MessageService().publish<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdated, arguments: StatusInfoUpdate(status: statusMessage));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicStatusInfoUpdated,
|
||||
payload: StatusInfoUpdate(status: statusMessage),
|
||||
);
|
||||
|
||||
//await MessageService().publish<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdated, arguments: StatusInfoUpdate(status: statusMessage));
|
||||
}
|
||||
|
||||
void _locationStatusMessageReceived(payloadData) async {
|
||||
@@ -291,7 +328,13 @@ class MqttCore {
|
||||
await MyApp.isarInstance.locationStatus.put(locationStatus);
|
||||
});
|
||||
|
||||
await MessageService().publish<LocationStatusUpdate>(Constants.messageTopicLocationStatusUpdated, arguments: LocationStatusUpdate(status: locationStatus));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicLocationStatusUpdated,
|
||||
payload: LocationStatusUpdate(status: locationStatus),
|
||||
);
|
||||
|
||||
// await MessageService().publish<LocationStatusUpdate>(Constants.messageTopicLocationStatusUpdated, arguments: LocationStatusUpdate(status: locationStatus));
|
||||
}
|
||||
|
||||
void _rankingMessageReceived(payloadData) async {
|
||||
@@ -302,7 +345,13 @@ class MqttCore {
|
||||
await MyApp.isarInstance.rankings.put(ranking);
|
||||
});
|
||||
|
||||
await MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicRankingUpdated,
|
||||
payload: RankingUpdated(),
|
||||
);
|
||||
|
||||
//await MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());
|
||||
}
|
||||
|
||||
void _jobMessageReceived(payloadData) async {
|
||||
@@ -322,11 +371,13 @@ class MqttCore {
|
||||
|
||||
_acknowlegdeJob(newJob);
|
||||
|
||||
try {
|
||||
await MessageService().publish<JobReceivedMessage>(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob));
|
||||
} catch (ex) {
|
||||
Util.logException("publish messageTopicJobReceived failed!");
|
||||
}
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicJobReceived,
|
||||
payload: JobReceivedMessage(job: newJob),
|
||||
);
|
||||
|
||||
// await MessageService().publish<JobReceivedMessage>(Constants.messageTopicJobReceived, arguments: JobReceivedMessage(job: newJob));
|
||||
}
|
||||
|
||||
void _jobDeleteReceived(payloadData) async {
|
||||
@@ -336,7 +387,13 @@ class MqttCore {
|
||||
await MyApp.isarInstance.jobs.where().filter().idEqualTo(jobDelMessage.id).deleteAll();
|
||||
});
|
||||
|
||||
await MessageService().publish<JobDeletedMessage>(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: jobDelMessage.id));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicJobDeleted,
|
||||
payload: JobDeletedMessage(id: jobDelMessage.id),
|
||||
);
|
||||
|
||||
//await MessageService().publish<JobDeletedMessage>(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: jobDelMessage.id));
|
||||
}
|
||||
|
||||
void _syncRequestReceived(payloadData) async {
|
||||
@@ -346,15 +403,21 @@ class MqttCore {
|
||||
}
|
||||
|
||||
void _messageMessageReceived(Map<String, dynamic> payloadData) async {
|
||||
var newMessage = await Message.mergeFromJson(payloadData);
|
||||
var newMessage = await ChatMessage.mergeFromJson(payloadData);
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.messages.put(newMessage);
|
||||
await MyApp.isarInstance.chatMessages.put(newMessage);
|
||||
});
|
||||
|
||||
await Util.playMp3('asbeep.mp3');
|
||||
|
||||
await MessageService().publish<MessageReceivedMessage>(Constants.messageTopicMessageReceived, arguments: MessageReceivedMessage(message: newMessage));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicMessageReceived,
|
||||
payload: MessageReceivedMessage(message: newMessage),
|
||||
);
|
||||
|
||||
//await MessageService().publish<MessageReceivedMessage>(Constants.messageTopicMessageReceived, arguments: MessageReceivedMessage(message: newMessage));
|
||||
}
|
||||
|
||||
void _messageUploadDeviceLogReceived(payloadData) async {
|
||||
@@ -403,7 +466,13 @@ class MqttCore {
|
||||
|
||||
_cancelTrackTimer();
|
||||
|
||||
await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicConnectionStatusChanged,
|
||||
payload: ConnectionStatus(status: ConnectionStatusEnum.notConnected),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.notConnected));
|
||||
}
|
||||
|
||||
Future<void> _clientConnected() async {
|
||||
@@ -413,7 +482,13 @@ class MqttCore {
|
||||
|
||||
_initSession();
|
||||
|
||||
await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.connected));
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicConnectionStatusChanged,
|
||||
payload: ConnectionStatus(status: ConnectionStatusEnum.connected),
|
||||
);
|
||||
|
||||
//await MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.connected));
|
||||
}
|
||||
|
||||
void _processBootstrap() async {
|
||||
@@ -458,8 +533,6 @@ class MqttCore {
|
||||
var brokerUriAndPortArray = bootstrapResponsePayload.broker.replaceFirst("mqtt://", "").split(":");
|
||||
_brokerUri = brokerUriAndPortArray[0];
|
||||
_brokerPort = int.parse(brokerUriAndPortArray[1]);
|
||||
//_brokerUri = "192.168.180.27";
|
||||
//_brokerPort = 1883;
|
||||
_clientId = bootstrapResponsePayload.id;
|
||||
_fromServerTopic = bootstrapResponsePayload.fromServer;
|
||||
_toServerTopic = bootstrapResponsePayload.toServer;
|
||||
@@ -559,20 +632,60 @@ class MqttCore {
|
||||
}
|
||||
|
||||
void initMessages() {
|
||||
MessageService().subscribe<PublishPayloadMessage>(Constants.messageTopicPublishPayload, this, (PublishPayloadMessage payloadMessage) {
|
||||
_publishText(payloadMessage.topic, jsonEncode(payloadMessage.message), payloadMessage.qos);
|
||||
});
|
||||
subscribe(
|
||||
queueId: Constants.messageTopicPublishPayload,
|
||||
callback: (message) {
|
||||
var publisPayloadMessage = message.payload as PublishPayloadMessage;
|
||||
|
||||
MessageService().subscribe<DisconnectClientMessage>(Constants.messageTopicDisconnectClient, this,
|
||||
_publishText(publisPayloadMessage.topic, jsonEncode(publisPayloadMessage.message), publisPayloadMessage.qos);
|
||||
},
|
||||
);
|
||||
/*MessageService().subscribe<PublishPayloadMessage>(Constants.messageTopicPublishPayload, this, (PublishPayloadMessage payloadMessage) {
|
||||
_publishText(payloadMessage.topic, jsonEncode(payloadMessage.message), payloadMessage.qos);
|
||||
});*/
|
||||
|
||||
subscribe(
|
||||
queueId: Constants.messageTopicDisconnectClient,
|
||||
callback: (message) {
|
||||
_disconnectMqttClient();
|
||||
},
|
||||
);
|
||||
/*MessageService().subscribe<DisconnectClientMessage>(Constants.messageTopicDisconnectClient, this,
|
||||
(DisconnectClientMessage disconnectClientMessage) {
|
||||
_disconnectMqttClient();
|
||||
});
|
||||
});*/
|
||||
|
||||
MessageService().subscribe<ConnectClientMessage>(Constants.messageTopicConnectClient, this, (ConnectClientMessage connectClientMessage) {
|
||||
subscribe(
|
||||
queueId: Constants.messageTopicConnectClient,
|
||||
callback: (message) {
|
||||
_connectToBroker();
|
||||
},
|
||||
);
|
||||
/*MessageService().subscribe<ConnectClientMessage>(Constants.messageTopicConnectClient, this, (ConnectClientMessage connectClientMessage) {
|
||||
_connectToBroker();
|
||||
});
|
||||
});*/
|
||||
|
||||
MessageService().subscribe<RequestConnectionStatusMessage>(Constants.messageTopicRequestConnectionStatus, this,
|
||||
subscribe(
|
||||
queueId: Constants.messageTopicRequestConnectionStatus,
|
||||
callback: (message) {
|
||||
bool connected = false;
|
||||
if (_mqttClient != null && _mqttClient!.connectionStatus != null) {
|
||||
if (_mqttClient!.connectionStatus!.state == MqttConnectionState.connected) {
|
||||
connected = true;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO MESSAGING
|
||||
sendMessage(
|
||||
routingKey: Constants.messageTopicCurrentConnectionStatus,
|
||||
payload: CurrentConnectionStatusMessage(state: connected),
|
||||
);
|
||||
|
||||
//await MessageService().publish<CurrentConnectionStatusMessage>(Constants.messageTopicCurrentConnectionStatus, arguments: CurrentConnectionStatusMessage(state: connected));
|
||||
},
|
||||
);
|
||||
|
||||
/*MessageService().subscribe<RequestConnectionStatusMessage>(Constants.messageTopicRequestConnectionStatus, this,
|
||||
(RequestConnectionStatusMessage requestConnectionStatusMessage) async {
|
||||
bool connected = false;
|
||||
if (_mqttClient != null && _mqttClient!.connectionStatus != null) {
|
||||
@@ -582,6 +695,6 @@ class MqttCore {
|
||||
}
|
||||
|
||||
await MessageService().publish<CurrentConnectionStatusMessage>(Constants.messageTopicCurrentConnectionStatus, arguments: CurrentConnectionStatusMessage(state: connected));
|
||||
});
|
||||
});*/
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user