This commit is contained in:
Sven committed 2024-03-26 13:35:20 +01:00
1 parent 880cdd65ff
commit 8586a23bfa
19 files changed
+179 -220

No files matched your search

+1 -1
View File
@@ -11,7 +11,7 @@ class Constants {
static const String messageTopicRankingUpdated = "ranking_updated";
static const String messageTopicJobReceived = "job_received";
static const String messageTopicJobDeleted = "job_deleted";
static const String messageTopicUpdateBadges = "update_badges";
static const String messageTopicRefreshBadges = "refresh_badges";
static const String messageTopicMessageReceived = "message_received";
static const String messageTopicPushContentView = "push_content_view";
static const String messageTopicPopContentView = "pop_content_view";
@@ -1,4 +0,0 @@
class UpdateBadgesMessage {
UpdateBadgesMessage();
}
+43 -35
View File
@@ -9,7 +9,6 @@ import 'package:mqtt_client/mqtt_client.dart';
import 'package:mqtt_client/mqtt_server_client.dart';
import 'package:stadtbote/model/enqueued_message.dart';
import 'package:stadtbote/model/log_entry.dart';
import 'package:stadtbote/model/ranking.dart';
import 'package:stadtbote/model/status.dart';
import 'package:stadtbote/protocoll_messages/acknowledge_job.dart';
import 'package:stadtbote/protocoll_messages/bootstrap_request.dart';
@@ -28,7 +27,6 @@ import 'package:stadtbote/tools/message_service.dart';
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/ranking_updated.dart';
import 'package:stadtbote/tools/messages/session_info_update.dart';
import 'package:stadtbote/tools/messages/status_info_update.dart';
// ignore: depend_on_referenced_packages
@@ -269,7 +267,7 @@ class MqttCore {
}
void _rankingMessageReceived(List<dynamic> payloadData) async {
Map<String, dynamic> rankingMap = {};
/*Map<String, dynamic> rankingMap = {};
rankingMap["ranks"] = payloadData;
var ranking = Ranking.fromJson(rankingMap);
@@ -277,7 +275,7 @@ class MqttCore {
await MyApp.isarInstance.rankings.put(ranking);
});
MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());
MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());*/
}
void _jobMessageReceived(payloadData) async {
@@ -306,17 +304,14 @@ class MqttCore {
}
}
void _jobDeleteReceived(List<dynamic> payloadData) async {
Map<String, dynamic> map = {};
map["jobDel"] = payloadData;
var jobDelMessage = JobDelMessage.fromJson(map);
for(var jobId in jobDelMessage.jobDel) {
void _jobDeleteReceived(payloadData) async {
for(var jobId in payloadData) {
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.jobs.delete(jobId);
});
MessageService().publish<JobDeletedMessage>(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: jobDelMessage.id));
MessageService().publish<JobDeletedMessage>(Constants.messageTopicJobDeleted, arguments: JobDeletedMessage(id: jobId));
}
}
void _syncRequestReceived(payloadData) async {
@@ -325,7 +320,7 @@ class MqttCore {
_sendSyncMessage();
}
void _messageMessageReceived(payloadData) async {
void _messageMessageReceived(Map<String, dynamic> payloadData) async {
var newMessage = await Message.mergeFromJson(payloadData);
await MyApp.isarInstance.writeTxn(() async {
@@ -337,6 +332,22 @@ class MqttCore {
MessageService().publish<MessageReceivedMessage>(Constants.messageTopicMessageReceived, arguments: MessageReceivedMessage(message: newMessage));
}
void _messageUploadDeviceLogReceived(payloadData) async {
var deviceLogRequest = DeviceLogRequest.fromJson(payloadData);
var logEintries = await MyApp.isarInstance.logEntrys.filter().timeGreaterThan(deviceLogRequest.startDateTime).findAll();
var deviceLog = DeviceLogResponse();
deviceLog.entries = logEintries;
var json = jsonEncode(deviceLog.toJson());
var stringBytes = utf8.encode(json);
var gzipBytes = GZipEncoder().encode(stringBytes);
var topic = "/log/${_toServerTopic.replaceAll("/app/", "").replaceAll("/to_server", "")}";
publishBinary(topic, gzipBytes!);
}
void _startReconnectTimer() {
connectionState = ConnectionStateEnum.notConnected;
@@ -390,24 +401,21 @@ class MqttCore {
handshakeMessage.deviceObject = deviceObject;
handshakeMessage.ver = await Util.getAppVersion();
//var jsonMap = handshakeMessage.toJson();
//var json = jsonEncode(jsonMap);
var uri = "http://test-app-server.dns.army:8080/bootstrap";
var jsonMap = handshakeMessage.toJson();
var json = jsonEncode(jsonMap);
var uri = "https://init-x.assecutor.de/bootstrap?get_mqtt_broker=$json";
Util.logInfo("Bootstrap request: $uri");
var response = await http.get(Uri.parse(uri));
responseText = response.body;
var responseText = response.body;
Util.logInfo("Bootstrap response: $responseText");
var bootstrapResponsePayload = BootstrapResponse.fromJson(jsonDecode(responseText)["payload"]);
var bootstrapResponse = BootstrapResponse.fromJson(jsonDecode(responseText));
var brokerUriAndPortArray = bootstrapResponse.broker.replaceFirst("mqtt://", "").split(":");
var brokerUriAndPortArray = bootstrapResponsePayload.broker.replaceFirst("mqtt://", "").split(":");
_brokerUri = brokerUriAndPortArray[0];
_brokerPort = int.parse(brokerUriAndPortArray[1]);
_clientId = bootstrapResponse.id;
_fromServerTopic = bootstrapResponse.fromServer;
_toServerTopic = bootstrapResponse.toServer;
_fromServerTopic = bootstrapResponsePayload.fromServer;
_toServerTopic = bootstrapResponsePayload.toServer;
_connectToBroker();
} catch (ex) {
@@ -438,23 +446,23 @@ class MqttCore {
answer.sync.jobs.add(syncJob);
}
MqttCore.instance.publishText("sync", jsonEncode(answer.toJson()));
MqttCore.instance.publishPayloadMessage("server", answer.toJson());
}
void _startTrackTimer() {
_trackTimer ??= Timer.periodic(const Duration(seconds: 60), (Timer t) {
var answer = MyApp.currentPosition;
if (answer != null) {
var trackMessage = TrackMessage();
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();
var position = MyApp.currentPosition;
if (position != null) {
var trackMessage = TrackMessage();
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();
publishPayloadMessage("track", trackMessage.toJson());
}
});
publishPayloadMessage("track", trackMessage.toJson());
}
});
}
void _cancelTrackTimer() {
+1 -1
View File
@@ -4,7 +4,7 @@ import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:image_picker/image_picker.dart';
import 'package:package_info/package_info.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:stadtbote/main.dart';
import 'package:stadtbote/model/job.dart';