Erweiterungen

This commit is contained in:
Sven committed 2024-02-10 09:12:51 +01:00
1 parent 20a1309946
commit 25a2455ce1
18 files changed
+2272 -1261

No files matched your search

+2 -1
View File
@@ -6,7 +6,8 @@ class Constants {
static const String messageTopicConnectionStatusChanged = "connection_status_changed";
static const String messageTopicSessionInfoUpdate = "status_info_updated";
static const String messageTopicStatusInfoUpdate = "session_info_updated";
static const String messageTopicSessionStatusInfoUpdate = "session_status_info_updated";
static const String messageTopicStatusInfoUpdate = "status_info_updated";
static const String messageTopicJobReceived = "job_received";
static const String messageTopicJobDeleted = "job_deleted";
static const String messageTopicMessageReceived = "message_received";
+4 -4
View File
@@ -1,8 +1,8 @@
import 'package:stadtbote/model/status.dart';
import 'package:stadtbote/model/session_status.dart';
class StatusInfoUpdate {
StatusInfoUpdate({required this.status});
class SessionStatusInfoUpdate {
SessionStatusInfoUpdate({required this.status});
final Status status;
final SessionStatus status;
}
@@ -0,0 +1,7 @@
import 'package:stadtbote/model/status.dart';
class StatusInfoUpdate {
StatusInfoUpdate({required this.status});
final Status status;
}
+26 -7
View File
@@ -6,6 +6,7 @@ import 'package:isar/isar.dart';
import 'package:mqtt_client/mqtt_client.dart';
import 'package:mqtt_client/mqtt_server_client.dart';
import 'package:stadtbote/model/job_tour.dart';
import 'package:stadtbote/model/status.dart';
import 'package:stadtbote/protocoll_messages/bootstrap_request.dart';
import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart';
import 'package:stadtbote/protocoll_messages/device_object.dart';
@@ -23,13 +24,14 @@ import 'package:stadtbote/tools/messages/job_deleted_message.dart';
import 'package:stadtbote/tools/messages/job_received_message.dart';
import 'package:stadtbote/tools/messages/message_message.dart';
import 'package:stadtbote/tools/messages/session_info_update.dart';
import 'package:stadtbote/tools/messages/status_info_update.dart';
// ignore: depend_on_referenced_packages
import 'package:typed_data/typed_buffers.dart';
import 'package:http/http.dart' as http;
import 'package:uuid/uuid.dart';
import '../main.dart';
import '../model/status.dart';
import '../model/session_status.dart';
import 'constants.dart';
import 'util.dart';
@@ -164,6 +166,10 @@ class MqttCore {
_sessionMessageReceived(payloadData);
break;
case 'status':
_statusMessageReceived(payloadData);
break;
case 'ranks':
_rankingMessageReceived(payloadData);
break;
@@ -207,15 +213,27 @@ class MqttCore {
await _sendSyncMessage();
var statusMessage = Status.fromJson(payloadData['status']);
var sessionStatusMessage = SessionStatus.fromJson(payloadData['status']);
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.sessionStatus.clear();
await MyApp.isarInstance.sessionStatus.put(sessionStatusMessage);
});
MessageService().publish<SessionStatusInfoUpdate>(Constants.messageTopicSessionStatusInfoUpdate, arguments: SessionStatusInfoUpdate(status: sessionStatusMessage));
_startTrackTimer();
}
void _statusMessageReceived(payloadData) async {
var statusMessage = Status.fromJson(payloadData);
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.status.clear();
await MyApp.isarInstance.status.put(statusMessage);
});
MessageService().publish<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdate, arguments: StatusInfoUpdate(status: statusMessage));
_startTrackTimer();
}
void _rankingMessageReceived(payloadData) async {
@@ -372,14 +390,14 @@ class MqttCore {
var jobs = await MyApp.isarInstance.jobs.filter().stateGreaterThan(-1).findAll();
var answer = SyncJobsMessage();
answer.utcUnixTime = DateTime.now().toUtc().millisecondsSinceEpoch ~/ 1000;
answer.sync = SyncJobMessageSync();
answer.sync.jobs = [];
answer.sync.utcUnixTime = DateTime.now().toUtc().millisecondsSinceEpoch ~/ 1000;
for (var job in jobs) {
SyncJobMessageJob syncJob = SyncJobMessageJob();
syncJob.state = job.state;
syncJob.id = job.id;
syncJob.ver = job.ver;
syncJob.ver = job.ver.toString();
answer.sync.jobs.add(syncJob);
}
@@ -391,7 +409,8 @@ class MqttCore {
var position = MyApp.currentPosition;
if (position != null) {
var trackMessage = TrackMessage();
trackMessage.pos = FinTaskPos();
trackMessage.pos = TrackPosition();
trackMessage.pos.time = position.timestamp.toIso8601String();
trackMessage.pos.lat = position.latitude;
trackMessage.pos.long = position.longitude;
trackMessage.pos.acc = position.accuracy.toInt();
+18
View File
@@ -320,3 +320,21 @@ String mapTourMode(String mode) {
return text;
}
Future<void> showAlertDialog(BuildContext context, String title, String message) async {
await showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text(title),
content: Text(message),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: const Text('OK'),
),
],
);
}
);
}