Fehlerkorrekturen
This commit is contained in:
1 parent
5411da55b7
commit
4070fc81a6
6 files changed
+691
-11
No files matched your search
@@ -130,7 +130,7 @@ class _MessagesPageState extends State<MessagesPage> {
|
|||||||
}
|
}
|
||||||
text = text.trim();
|
text = text.trim();
|
||||||
|
|
||||||
_messages.insert(0, types.TextMessage(
|
_messages.add(types.TextMessage(
|
||||||
author: message.from == _sid ? _user : _central,
|
author: message.from == _sid ? _user : _central,
|
||||||
createdAt: DateTime
|
createdAt: DateTime
|
||||||
.parse(message.time)
|
.parse(message.time)
|
||||||
@@ -139,6 +139,8 @@ class _MessagesPageState extends State<MessagesPage> {
|
|||||||
text: text,
|
text: text,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
_messages.sort((a, b) => b.createdAt! > a.createdAt! ? 1 : 0);
|
||||||
|
|
||||||
message.read = true;
|
message.read = true;
|
||||||
MyApp.isarInstance.writeTxnSync(() {
|
MyApp.isarInstance.writeTxnSync(() {
|
||||||
MyApp.isarInstance.messages.putSync(message);
|
MyApp.isarInstance.messages.putSync(message);
|
||||||
|
|||||||
@@ -163,14 +163,18 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 5),
|
const SizedBox(height: 5),
|
||||||
Text(
|
SizedBox(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.7,
|
||||||
|
child: Text(
|
||||||
taskInfo.additionalText ?? '',
|
taskInfo.additionalText ?? '',
|
||||||
textAlign: TextAlign.left,
|
textAlign: TextAlign.left,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: textColor,
|
color: textColor,
|
||||||
fontSize: 12.0,
|
fontSize: 12.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -317,6 +321,7 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
answer.val = notice;
|
answer.val = notice;
|
||||||
|
|
||||||
taskInfo.answer = jsonEncode(answer.toJson());
|
taskInfo.answer = jsonEncode(answer.toJson());
|
||||||
|
taskInfo.additionalText = notice;
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
_finishTaskProcessing(taskInfo);
|
_finishTaskProcessing(taskInfo);
|
||||||
|
|||||||
+3
-1
@@ -5,6 +5,7 @@ import 'package:geolocator/geolocator.dart';
|
|||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:stadtbote/messages/pop_content_view_message.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/message.dart';
|
||||||
import 'package:stadtbote/model/ranking.dart';
|
import 'package:stadtbote/model/ranking.dart';
|
||||||
import 'package:stadtbote/model/status.dart';
|
import 'package:stadtbote/model/status.dart';
|
||||||
@@ -34,7 +35,8 @@ Future<void> main() async {
|
|||||||
JobSchema,
|
JobSchema,
|
||||||
TaskInfoSchema,
|
TaskInfoSchema,
|
||||||
MessageSchema,
|
MessageSchema,
|
||||||
RankingSchema
|
RankingSchema,
|
||||||
|
EnqueuedMessageSchema,
|
||||||
], directory: dir.path);
|
], directory: dir.path);
|
||||||
|
|
||||||
runZonedGuarded(() {}, (error, stackTrace) {
|
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');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
import 'package:mqtt_client/mqtt_client.dart';
|
import 'package:mqtt_client/mqtt_client.dart';
|
||||||
import 'package:mqtt_client/mqtt_server_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/ranking.dart';
|
||||||
import 'package:stadtbote/model/status.dart';
|
import 'package:stadtbote/model/status.dart';
|
||||||
import 'package:stadtbote/protocoll_messages/bootstrap_request.dart';
|
import 'package:stadtbote/protocoll_messages/bootstrap_request.dart';
|
||||||
@@ -131,31 +132,27 @@ class MqttCore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
publishText(String topic, String text) {
|
publishText(String topic, String text) {
|
||||||
try {
|
|
||||||
var buffer = Uint8Buffer();
|
var buffer = Uint8Buffer();
|
||||||
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");
|
Util.logInfo("message $text send to $topic");
|
||||||
} catch (e) {
|
|
||||||
Util.logException(e.toString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
publishPayloadMessage(String receiver, Map<String, dynamic> payload) {
|
publishPayloadMessage(String topic, Map<String, dynamic> payload) {
|
||||||
try {
|
|
||||||
var payloadContainer = PayloadContainer();
|
var payloadContainer = PayloadContainer();
|
||||||
payloadContainer.id = const Uuid().v4().toString();
|
payloadContainer.id = const Uuid().v4().toString();
|
||||||
payloadContainer.recv = receiver;
|
payloadContainer.recv = topic;
|
||||||
payloadContainer.store = true;
|
payloadContainer.store = true;
|
||||||
payloadContainer.payload = payload;
|
payloadContainer.payload = payload;
|
||||||
|
|
||||||
var json = jsonEncode(payloadContainer.toJson());
|
var json = jsonEncode(payloadContainer.toJson());
|
||||||
|
|
||||||
|
try {
|
||||||
publishText(_toServerTopic, json);
|
publishText(_toServerTopic, json);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Util.logException(e.toString());
|
_enqueueMessage(topic, jsonEncode(payloadContainer.toJson()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,6 +231,8 @@ class MqttCore {
|
|||||||
|
|
||||||
await _sendSyncMessage();
|
await _sendSyncMessage();
|
||||||
|
|
||||||
|
await _sendEnqueuedMessages();
|
||||||
|
|
||||||
var sessionStatusMessage = SessionStatus.fromJson(payloadData['status']);
|
var sessionStatusMessage = SessionStatus.fromJson(payloadData['status']);
|
||||||
|
|
||||||
await MyApp.isarInstance.writeTxn(() async {
|
await MyApp.isarInstance.writeTxn(() async {
|
||||||
@@ -457,4 +456,29 @@ class MqttCore {
|
|||||||
_trackTimer = null;
|
_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