Erweiterungen
This commit is contained in:
1 parent
5384964e3d
commit
3cc8ec47fc
7 files changed
+205
-7
No files matched your search
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:expandable/expandable.dart';
|
import 'package:expandable/expandable.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
@@ -5,6 +7,10 @@ import 'package:stadtbote/content_views/utils/content_view_widget.dart';
|
|||||||
import 'package:stadtbote/content_views/utils/header_info.dart';
|
import 'package:stadtbote/content_views/utils/header_info.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:badges/badges.dart' as badges;
|
import 'package:badges/badges.dart' as badges;
|
||||||
|
import 'package:stadtbote/model/accept_job_message.dart';
|
||||||
|
import 'package:stadtbote/model/payload_container.dart';
|
||||||
|
import 'package:stadtbote/tools/mqtt_core.dart';
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
import '../main.dart';
|
import '../main.dart';
|
||||||
import '../model/job.dart';
|
import '../model/job.dart';
|
||||||
@@ -154,11 +160,11 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> {
|
|||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
Row(children: [
|
Row(children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: getDefaultButton('Ablehnen', () => {_sendAnswer()}),
|
child: getDefaultButton('Ablehnen', () => {_sendAnswer(job, 1)}),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 20),
|
const SizedBox(width: 20),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: getDefaultButton('Annehmen', () => {}),
|
child: getDefaultButton('Annehmen', () => {_sendAnswer(job, 2)}),
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
],
|
],
|
||||||
@@ -173,5 +179,20 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> {
|
|||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sendAnswer() {}
|
_sendAnswer(Job job, int item) {
|
||||||
}
|
var message = AcceptJobMessage();
|
||||||
|
message.reaction = Reaction();
|
||||||
|
message.reaction.id = job.id.toString();
|
||||||
|
message.reaction.ver = job.ver.toString();
|
||||||
|
message.reaction.item = item;
|
||||||
|
message.reaction.track = Track();
|
||||||
|
message.reaction.track.time = DateTime.now().toUtc().toIso8601String();
|
||||||
|
message.reaction.track.pos = Pos();
|
||||||
|
message.reaction.track.pos.lat = 0;
|
||||||
|
message.reaction.track.pos.long = 0;
|
||||||
|
message.reaction.track.pos.acc = 1;
|
||||||
|
|
||||||
|
MqttCore.instance.publishPayloadMessage("server", message.toJson());
|
||||||
|
|
||||||
|
Util.logInfo('test');
|
||||||
|
}}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'accept_job_message.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class AcceptJobMessage {
|
||||||
|
late Reaction reaction;
|
||||||
|
|
||||||
|
AcceptJobMessage();
|
||||||
|
|
||||||
|
factory AcceptJobMessage.fromJson(Map<String, dynamic> json) => _$AcceptJobMessageFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$AcceptJobMessageToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class Reaction {
|
||||||
|
late String id;
|
||||||
|
late String ver;
|
||||||
|
late int item;
|
||||||
|
late Track track;
|
||||||
|
|
||||||
|
Reaction();
|
||||||
|
|
||||||
|
factory Reaction.fromJson(Map<String, dynamic> json) => _$ReactionFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$ReactionToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
@JsonSerializable()class Track {
|
||||||
|
late String time;
|
||||||
|
late Pos pos;
|
||||||
|
|
||||||
|
Track();
|
||||||
|
|
||||||
|
factory Track.fromJson(Map<String, dynamic> json) => _$TrackFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$TrackToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class Pos {
|
||||||
|
late double lat;
|
||||||
|
late double long;
|
||||||
|
late double acc;
|
||||||
|
|
||||||
|
Pos();
|
||||||
|
|
||||||
|
factory Pos.fromJson(Map<String, dynamic> json) => _$PosFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$PosToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'accept_job_message.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
AcceptJobMessage _$AcceptJobMessageFromJson(Map<String, dynamic> json) =>
|
||||||
|
AcceptJobMessage()
|
||||||
|
..reaction = Reaction.fromJson(json['reaction'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$AcceptJobMessageToJson(AcceptJobMessage instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'reaction': instance.reaction,
|
||||||
|
};
|
||||||
|
|
||||||
|
Reaction _$ReactionFromJson(Map<String, dynamic> json) => Reaction()
|
||||||
|
..id = json['id'] as String
|
||||||
|
..ver = json['ver'] as String
|
||||||
|
..item = json['item'] as int
|
||||||
|
..track = Track.fromJson(json['track'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$ReactionToJson(Reaction instance) => <String, dynamic>{
|
||||||
|
'id': instance.id,
|
||||||
|
'ver': instance.ver,
|
||||||
|
'item': instance.item,
|
||||||
|
'track': instance.track,
|
||||||
|
};
|
||||||
|
|
||||||
|
Track _$TrackFromJson(Map<String, dynamic> json) => Track()
|
||||||
|
..time = json['time'] as String
|
||||||
|
..pos = Pos.fromJson(json['pos'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
Map<String, dynamic> _$TrackToJson(Track instance) => <String, dynamic>{
|
||||||
|
'time': instance.time,
|
||||||
|
'pos': instance.pos,
|
||||||
|
};
|
||||||
|
|
||||||
|
Pos _$PosFromJson(Map<String, dynamic> json) => Pos()
|
||||||
|
..lat = (json['lat'] as num).toDouble()
|
||||||
|
..long = (json['long'] as num).toDouble()
|
||||||
|
..acc = (json['acc'] as num).toDouble();
|
||||||
|
|
||||||
|
Map<String, dynamic> _$PosToJson(Pos instance) => <String, dynamic>{
|
||||||
|
'lat': instance.lat,
|
||||||
|
'long': instance.long,
|
||||||
|
'acc': instance.acc,
|
||||||
|
};
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'payload_container.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class PayloadContainer {
|
||||||
|
late String recv;
|
||||||
|
|
||||||
|
late bool store;
|
||||||
|
|
||||||
|
late String id;
|
||||||
|
|
||||||
|
late Map<String, dynamic> payload;
|
||||||
|
|
||||||
|
PayloadContainer();
|
||||||
|
|
||||||
|
factory PayloadContainer.fromJson(Map<String, dynamic> json) => _$PayloadContainerFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$PayloadContainerToJson(this);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'payload_container.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
PayloadContainer _$PayloadContainerFromJson(Map<String, dynamic> json) =>
|
||||||
|
PayloadContainer()
|
||||||
|
..recv = json['recv'] as String
|
||||||
|
..store = json['store'] as bool
|
||||||
|
..id = json['id'] as String
|
||||||
|
..payload = json['payload'] as Map<String, dynamic>;
|
||||||
|
|
||||||
|
Map<String, dynamic> _$PayloadContainerToJson(PayloadContainer instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'recv': instance.recv,
|
||||||
|
'store': instance.store,
|
||||||
|
'id': instance.id,
|
||||||
|
'payload': instance.payload,
|
||||||
|
};
|
||||||
@@ -4,10 +4,12 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
||||||
import 'package:stadtbote/main.dart';
|
import 'package:stadtbote/main.dart';
|
||||||
|
import 'package:stadtbote/model/accept_job_message.dart';
|
||||||
import 'package:stadtbote/model/job.dart';
|
import 'package:stadtbote/model/job.dart';
|
||||||
import 'package:stadtbote/tools/constants.dart';
|
import 'package:stadtbote/tools/constants.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
import 'package:badges/badges.dart' as badges;
|
import 'package:badges/badges.dart' as badges;
|
||||||
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
void showAcceptJobsPopup(BuildContext context) async {
|
void showAcceptJobsPopup(BuildContext context) async {
|
||||||
var entries = await _createListEntries();
|
var entries = await _createListEntries();
|
||||||
@@ -142,11 +144,11 @@ Future<List<Widget>> _createListEntries() async {
|
|||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
Row(children: [
|
Row(children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: getDefaultButton('Ablehnen', () => {_sendAnswer()}),
|
child: getDefaultButton('Ablehnen', () => {_sendAnswer(1)}),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 20),
|
const SizedBox(width: 20),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: getDefaultButton('Annehmen', () => {}),
|
child: getDefaultButton('Annehmen', () => {_sendAnswer(2)}),
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
],
|
],
|
||||||
@@ -192,4 +194,14 @@ private void SendAnswer(int item)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
_sendAnswer() {}
|
_sendAnswer(int item) {
|
||||||
|
var answer = AcceptJobMessage();
|
||||||
|
answer.reaction = Reaction();
|
||||||
|
answer.reaction.id = Uuid().v4().toString();
|
||||||
|
answer.reaction.track = Track();
|
||||||
|
answer.reaction.track.time = DateTime.now().toUtc().toIso8601String();
|
||||||
|
|
||||||
|
var json = answer.toJson();
|
||||||
|
|
||||||
|
Util.logInfo('test');
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ import 'package:stadtbote/model/bootstrap_response_payload.dart';
|
|||||||
import 'package:stadtbote/model/device_object.dart';
|
import 'package:stadtbote/model/device_object.dart';
|
||||||
import 'package:stadtbote/model/job.dart';
|
import 'package:stadtbote/model/job.dart';
|
||||||
import 'package:stadtbote/model/message.dart';
|
import 'package:stadtbote/model/message.dart';
|
||||||
|
import 'package:stadtbote/model/payload_container.dart';
|
||||||
import 'package:stadtbote/model/start_session_message.dart';
|
import 'package:stadtbote/model/start_session_message.dart';
|
||||||
import 'package:stadtbote/tools/connection_status.dart';
|
import 'package:stadtbote/tools/connection_status.dart';
|
||||||
import 'package:stadtbote/tools/messages/job_received_message.dart';
|
import 'package:stadtbote/tools/messages/job_received_message.dart';
|
||||||
@@ -97,6 +98,24 @@ class MqttCore {
|
|||||||
buffer.addAll(text.codeUnits);
|
buffer.addAll(text.codeUnits);
|
||||||
|
|
||||||
_mqttClient.publishMessage(topic, MqttQos.exactlyOnce, buffer);
|
_mqttClient.publishMessage(topic, MqttQos.exactlyOnce, buffer);
|
||||||
|
|
||||||
|
Util.logInfo("message $text send to $topic");
|
||||||
|
} catch (e) {
|
||||||
|
Util.logException(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publishPayloadMessage(String receiver, Map<String, dynamic> payload) {
|
||||||
|
try {
|
||||||
|
var payloadContainer = PayloadContainer();
|
||||||
|
payloadContainer.id = const Uuid().v4().toString();
|
||||||
|
payloadContainer.recv = receiver;
|
||||||
|
payloadContainer.store = true;
|
||||||
|
payloadContainer.payload = payload;
|
||||||
|
|
||||||
|
var json = jsonEncode(payloadContainer.toJson());
|
||||||
|
|
||||||
|
publishText(_toServerTopic, json);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Util.logException(e.toString());
|
Util.logException(e.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user