Fehlerkorrekturen
This commit is contained in:
1 parent
5411da55b7
commit
4070fc81a6
6 files changed
+706
-26
No files matched your search
@@ -130,7 +130,7 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
}
|
||||
text = text.trim();
|
||||
|
||||
_messages.insert(0, types.TextMessage(
|
||||
_messages.add(types.TextMessage(
|
||||
author: message.from == _sid ? _user : _central,
|
||||
createdAt: DateTime
|
||||
.parse(message.time)
|
||||
@@ -139,6 +139,8 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
text: text,
|
||||
));
|
||||
|
||||
_messages.sort((a, b) => b.createdAt! > a.createdAt! ? 1 : 0);
|
||||
|
||||
message.read = true;
|
||||
MyApp.isarInstance.writeTxnSync(() {
|
||||
MyApp.isarInstance.messages.putSync(message);
|
||||
|
||||
@@ -163,12 +163,16 @@ class _TaskListPageState extends State<TaskListPage> {
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 5),
|
||||
Text(
|
||||
taskInfo.additionalText ?? '',
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(
|
||||
color: textColor,
|
||||
fontSize: 12.0,
|
||||
SizedBox(
|
||||
width: MediaQuery.of(context).size.width * 0.7,
|
||||
child: Text(
|
||||
taskInfo.additionalText ?? '',
|
||||
textAlign: TextAlign.left,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
color: textColor,
|
||||
fontSize: 12.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -317,6 +321,7 @@ class _TaskListPageState extends State<TaskListPage> {
|
||||
answer.val = notice;
|
||||
|
||||
taskInfo.answer = jsonEncode(answer.toJson());
|
||||
taskInfo.additionalText = notice;
|
||||
taskInfo.completed = true;
|
||||
|
||||
_finishTaskProcessing(taskInfo);
|
||||
|
||||
+3
-1
@@ -5,6 +5,7 @@ import 'package:geolocator/geolocator.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:stadtbote/messages/pop_content_view_message.dart';
|
||||
import 'package:stadtbote/model/enqueued_message.dart';
|
||||
import 'package:stadtbote/model/message.dart';
|
||||
import 'package:stadtbote/model/ranking.dart';
|
||||
import 'package:stadtbote/model/status.dart';
|
||||
@@ -34,7 +35,8 @@ Future<void> main() async {
|
||||
JobSchema,
|
||||
TaskInfoSchema,
|
||||
MessageSchema,
|
||||
RankingSchema
|
||||
RankingSchema,
|
||||
EnqueuedMessageSchema,
|
||||
], directory: dir.path);
|
||||
|
||||
runZonedGuarded(() {}, (error, stackTrace) {
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'enqueued_message.g.dart';
|
||||
|
||||
@collection
|
||||
class EnqueuedMessage {
|
||||
Id id = DateTime.now().millisecondsSinceEpoch;
|
||||
|
||||
late String topic;
|
||||
|
||||
late String payload;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,633 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'enqueued_message.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// IsarCollectionGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// 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 GetEnqueuedMessageCollection on Isar {
|
||||
IsarCollection<EnqueuedMessage> get enqueuedMessages => this.collection();
|
||||
}
|
||||
|
||||
const EnqueuedMessageSchema = CollectionSchema(
|
||||
name: r'EnqueuedMessage',
|
||||
id: 884922652682878785,
|
||||
properties: {
|
||||
r'payload': PropertySchema(
|
||||
id: 0,
|
||||
name: r'payload',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'receiver': PropertySchema(
|
||||
id: 1,
|
||||
name: r'receiver',
|
||||
type: IsarType.string,
|
||||
)
|
||||
},
|
||||
estimateSize: _enqueuedMessageEstimateSize,
|
||||
serialize: _enqueuedMessageSerialize,
|
||||
deserialize: _enqueuedMessageDeserialize,
|
||||
deserializeProp: _enqueuedMessageDeserializeProp,
|
||||
idName: r'id',
|
||||
indexes: {},
|
||||
links: {},
|
||||
embeddedSchemas: {},
|
||||
getId: _enqueuedMessageGetId,
|
||||
getLinks: _enqueuedMessageGetLinks,
|
||||
attach: _enqueuedMessageAttach,
|
||||
version: '3.1.0+1',
|
||||
);
|
||||
|
||||
int _enqueuedMessageEstimateSize(
|
||||
EnqueuedMessage object,
|
||||
List<int> offsets,
|
||||
Map<Type, List<int>> allOffsets,
|
||||
) {
|
||||
var bytesCount = offsets.last;
|
||||
bytesCount += 3 + object.payload.length * 3;
|
||||
bytesCount += 3 + object.topic.length * 3;
|
||||
return bytesCount;
|
||||
}
|
||||
|
||||
void _enqueuedMessageSerialize(
|
||||
EnqueuedMessage object,
|
||||
IsarWriter writer,
|
||||
List<int> offsets,
|
||||
Map<Type, List<int>> allOffsets,
|
||||
) {
|
||||
writer.writeString(offsets[0], object.payload);
|
||||
writer.writeString(offsets[1], object.topic);
|
||||
}
|
||||
|
||||
EnqueuedMessage _enqueuedMessageDeserialize(
|
||||
Id id,
|
||||
IsarReader reader,
|
||||
List<int> offsets,
|
||||
Map<Type, List<int>> allOffsets,
|
||||
) {
|
||||
final object = EnqueuedMessage();
|
||||
object.id = id;
|
||||
object.payload = reader.readString(offsets[0]);
|
||||
object.topic = reader.readString(offsets[1]);
|
||||
return object;
|
||||
}
|
||||
|
||||
P _enqueuedMessageDeserializeProp<P>(
|
||||
IsarReader reader,
|
||||
int propertyId,
|
||||
int offset,
|
||||
Map<Type, List<int>> allOffsets,
|
||||
) {
|
||||
switch (propertyId) {
|
||||
case 0:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 1:
|
||||
return (reader.readString(offset)) as P;
|
||||
default:
|
||||
throw IsarError('Unknown property with id $propertyId');
|
||||
}
|
||||
}
|
||||
|
||||
Id _enqueuedMessageGetId(EnqueuedMessage object) {
|
||||
return object.id;
|
||||
}
|
||||
|
||||
List<IsarLinkBase<dynamic>> _enqueuedMessageGetLinks(EnqueuedMessage object) {
|
||||
return [];
|
||||
}
|
||||
|
||||
void _enqueuedMessageAttach(
|
||||
IsarCollection<dynamic> col, Id id, EnqueuedMessage object) {
|
||||
object.id = id;
|
||||
}
|
||||
|
||||
extension EnqueuedMessageQueryWhereSort
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QWhere> {
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterWhere> anyId() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(const IdWhereClause.any());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension EnqueuedMessageQueryWhere
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QWhereClause> {
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterWhereClause> idEqualTo(
|
||||
Id id) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(IdWhereClause.between(
|
||||
lower: id,
|
||||
upper: id,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterWhereClause>
|
||||
idNotEqualTo(Id id) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
if (query.whereSort == Sort.asc) {
|
||||
return query
|
||||
.addWhereClause(
|
||||
IdWhereClause.lessThan(upper: id, includeUpper: false),
|
||||
)
|
||||
.addWhereClause(
|
||||
IdWhereClause.greaterThan(lower: id, includeLower: false),
|
||||
);
|
||||
} else {
|
||||
return query
|
||||
.addWhereClause(
|
||||
IdWhereClause.greaterThan(lower: id, includeLower: false),
|
||||
)
|
||||
.addWhereClause(
|
||||
IdWhereClause.lessThan(upper: id, includeUpper: false),
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterWhereClause>
|
||||
idGreaterThan(Id id, {bool include = false}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(
|
||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterWhereClause> idLessThan(
|
||||
Id id,
|
||||
{bool include = false}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(
|
||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterWhereClause> idBetween(
|
||||
Id lowerId,
|
||||
Id upperId, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addWhereClause(IdWhereClause.between(
|
||||
lower: lowerId,
|
||||
includeLower: includeLower,
|
||||
upper: upperId,
|
||||
includeUpper: includeUpper,
|
||||
));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension EnqueuedMessageQueryFilter
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QFilterCondition> {
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
idEqualTo(Id value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'id',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
idGreaterThan(
|
||||
Id value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'id',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
idLessThan(
|
||||
Id value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'id',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
idBetween(
|
||||
Id lower,
|
||||
Id upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'id',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'payload',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadGreaterThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'payload',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadLessThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'payload',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadBetween(
|
||||
String lower,
|
||||
String upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'payload',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.startsWith(
|
||||
property: r'payload',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.endsWith(
|
||||
property: r'payload',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadContains(String value, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.contains(
|
||||
property: r'payload',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadMatches(String pattern, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.matches(
|
||||
property: r'payload',
|
||||
wildcard: pattern,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'payload',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
payloadIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'payload',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'receiver',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverGreaterThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'receiver',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverLessThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'receiver',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverBetween(
|
||||
String lower,
|
||||
String upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'receiver',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.startsWith(
|
||||
property: r'receiver',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.endsWith(
|
||||
property: r'receiver',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverContains(String value, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.contains(
|
||||
property: r'receiver',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverMatches(String pattern, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.matches(
|
||||
property: r'receiver',
|
||||
wildcard: pattern,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'receiver',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterFilterCondition>
|
||||
receiverIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'receiver',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension EnqueuedMessageQueryObject
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QFilterCondition> {}
|
||||
|
||||
extension EnqueuedMessageQueryLinks
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QFilterCondition> {}
|
||||
|
||||
extension EnqueuedMessageQuerySortBy
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QSortBy> {
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy> sortByPayload() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'payload', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy>
|
||||
sortByPayloadDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'payload', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy>
|
||||
sortByReceiver() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'receiver', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy>
|
||||
sortByReceiverDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'receiver', Sort.desc);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension EnqueuedMessageQuerySortThenBy
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QSortThenBy> {
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy> thenById() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'id', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy> thenByIdDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'id', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy> thenByPayload() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'payload', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy>
|
||||
thenByPayloadDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'payload', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy>
|
||||
thenByReceiver() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'receiver', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QAfterSortBy>
|
||||
thenByReceiverDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'receiver', Sort.desc);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension EnqueuedMessageQueryWhereDistinct
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QDistinct> {
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QDistinct> distinctByPayload(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'payload', caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, EnqueuedMessage, QDistinct> distinctByReceiver(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'receiver', caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension EnqueuedMessageQueryProperty
|
||||
on QueryBuilder<EnqueuedMessage, EnqueuedMessage, QQueryProperty> {
|
||||
QueryBuilder<EnqueuedMessage, int, QQueryOperations> idProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'id');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, String, QQueryOperations> payloadProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'payload');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<EnqueuedMessage, String, QQueryOperations> receiverProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'receiver');
|
||||
});
|
||||
}
|
||||
}
|
||||
+42
-18
@@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
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/ranking.dart';
|
||||
import 'package:stadtbote/model/status.dart';
|
||||
import 'package:stadtbote/protocoll_messages/bootstrap_request.dart';
|
||||
@@ -131,31 +132,27 @@ class MqttCore {
|
||||
}
|
||||
|
||||
publishText(String topic, String text) {
|
||||
try {
|
||||
var buffer = Uint8Buffer();
|
||||
buffer.addAll(text.codeUnits);
|
||||
var buffer = Uint8Buffer();
|
||||
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());
|
||||
}
|
||||
Util.logInfo("message $text send to $topic");
|
||||
}
|
||||
|
||||
publishPayloadMessage(String receiver, Map<String, dynamic> payload) {
|
||||
publishPayloadMessage(String topic, Map<String, dynamic> payload) {
|
||||
var payloadContainer = PayloadContainer();
|
||||
payloadContainer.id = const Uuid().v4().toString();
|
||||
payloadContainer.recv = topic;
|
||||
payloadContainer.store = true;
|
||||
payloadContainer.payload = payload;
|
||||
|
||||
var json = jsonEncode(payloadContainer.toJson());
|
||||
|
||||
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) {
|
||||
Util.logException(e.toString());
|
||||
_enqueueMessage(topic, jsonEncode(payloadContainer.toJson()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,6 +231,8 @@ class MqttCore {
|
||||
|
||||
await _sendSyncMessage();
|
||||
|
||||
await _sendEnqueuedMessages();
|
||||
|
||||
var sessionStatusMessage = SessionStatus.fromJson(payloadData['status']);
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
@@ -457,4 +456,29 @@ class MqttCore {
|
||||
_trackTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
void _enqueueMessage(String receiver, String payload) async {
|
||||
var enqueuedMessage = EnqueuedMessage();
|
||||
enqueuedMessage.topic = receiver;
|
||||
enqueuedMessage.payload = payload;
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.enqueuedMessages.put(enqueuedMessage);
|
||||
});
|
||||
}
|
||||
|
||||
_sendEnqueuedMessages() async {
|
||||
var enqueuedMessages = await MyApp.isarInstance.enqueuedMessages.where().findAll();
|
||||
if (enqueuedMessages.isNotEmpty) {
|
||||
for (var enqueuedMessage in enqueuedMessages) {
|
||||
try {
|
||||
publishText(enqueuedMessage.topic, enqueuedMessage.payload);
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.enqueuedMessages.delete(enqueuedMessage.id);
|
||||
});
|
||||
} catch (ex) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user