Erweiterungen
This commit is contained in:
1 parent
f460763d53
commit
3578a4767a
3 files changed
+56
-149
No files matched your search
@@ -96,25 +96,24 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
void _handleSendPressed(types.PartialText text) async {
|
||||
var now = DateTime.now();
|
||||
|
||||
var message = MessageMessage();
|
||||
message.mssg = sbmessage.Message();
|
||||
message.mssg.text = [text.text];
|
||||
message.mssg.from = _sid;
|
||||
message.mssg.subj = '';
|
||||
message.mssg.time = now.toUtc().toIso8601String();
|
||||
message.mssg.read = true;
|
||||
message.mssg.id = await sbmessage.Message.getNextId();
|
||||
var message = sbmessage.Message();
|
||||
message.text = text.text;
|
||||
message.from = _sid;
|
||||
message.subj = '';
|
||||
message.time = now.toUtc().toIso8601String();
|
||||
message.read = true;
|
||||
message.id = await sbmessage.Message.getNextId();
|
||||
|
||||
await MyApp.isarInstance.writeTxn(() async {
|
||||
await MyApp.isarInstance.messages.put(message.mssg);
|
||||
await MyApp.isarInstance.messages.put(message);
|
||||
});
|
||||
|
||||
MqttCore.instance.publishMessage('set_location', jsonEncode(message.toJson()));
|
||||
MqttCore.instance.publishMessage('message', jsonEncode(message.toJson()));
|
||||
|
||||
_messages.insert(0, types.TextMessage(
|
||||
author: _user,
|
||||
createdAt: now.millisecondsSinceEpoch,
|
||||
id: message.mssg.id.toString(),
|
||||
id: message.id.toString(),
|
||||
text: text.text,
|
||||
));
|
||||
|
||||
@@ -126,17 +125,11 @@ class _MessagesPageState extends State<MessagesPage> {
|
||||
|
||||
var messages = await MyApp.isarInstance.messages.where().findAll();
|
||||
for (var message in messages) {
|
||||
var text = message.subj.isNotEmpty ? '${message.subj}\n': '';
|
||||
for (var textLine in message.text) {
|
||||
text += '$textLine\n';
|
||||
}
|
||||
text = text.trim();
|
||||
|
||||
_messages.add(types.TextMessage(
|
||||
author: message.from == _sid ? _user : _central,
|
||||
createdAt: DateTime.parse(message.time).toLocal().millisecondsSinceEpoch,
|
||||
id: message.id.toString(),
|
||||
text: text,
|
||||
text: message.text,
|
||||
));
|
||||
|
||||
_messages.sort((a, b) => b.createdAt! > a.createdAt! ? 1 : 0);
|
||||
|
||||
+2
-13
@@ -5,17 +5,6 @@ import 'package:stadtbote/tools/util.dart';
|
||||
|
||||
part 'message.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class MessageMessage {
|
||||
late Message mssg;
|
||||
|
||||
MessageMessage();
|
||||
|
||||
factory MessageMessage.fromJson(Map<String, dynamic> json) => _$MessageMessageFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$MessageMessageToJson(this);
|
||||
}
|
||||
|
||||
@collection
|
||||
@JsonSerializable()
|
||||
class Message {
|
||||
@@ -27,7 +16,7 @@ class Message {
|
||||
|
||||
late String subj;
|
||||
|
||||
late List<String> text;
|
||||
late String text;
|
||||
|
||||
late bool? read = false;
|
||||
|
||||
@@ -45,7 +34,7 @@ class Message {
|
||||
availableMessage.time = json["time"];
|
||||
availableMessage.from = json["from"];
|
||||
availableMessage.subj = json["subj"];
|
||||
availableMessage.text = (json['text'] as List<dynamic>).map((e) => e as String).toList();
|
||||
availableMessage.text = json['text'];
|
||||
|
||||
return availableMessage;
|
||||
} else {
|
||||
|
||||
+43
-118
@@ -35,7 +35,7 @@ const MessageSchema = CollectionSchema(
|
||||
r'text': PropertySchema(
|
||||
id: 3,
|
||||
name: r'text',
|
||||
type: IsarType.stringList,
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'time': PropertySchema(
|
||||
id: 4,
|
||||
@@ -66,12 +66,6 @@ int _messageEstimateSize(
|
||||
bytesCount += 3 + object.from.length * 3;
|
||||
bytesCount += 3 + object.subj.length * 3;
|
||||
bytesCount += 3 + object.text.length * 3;
|
||||
{
|
||||
for (var i = 0; i < object.text.length; i++) {
|
||||
final value = object.text[i];
|
||||
bytesCount += value.length * 3;
|
||||
}
|
||||
}
|
||||
bytesCount += 3 + object.time.length * 3;
|
||||
return bytesCount;
|
||||
}
|
||||
@@ -85,7 +79,7 @@ void _messageSerialize(
|
||||
writer.writeString(offsets[0], object.from);
|
||||
writer.writeBool(offsets[1], object.read);
|
||||
writer.writeString(offsets[2], object.subj);
|
||||
writer.writeStringList(offsets[3], object.text);
|
||||
writer.writeString(offsets[3], object.text);
|
||||
writer.writeString(offsets[4], object.time);
|
||||
}
|
||||
|
||||
@@ -100,7 +94,7 @@ Message _messageDeserialize(
|
||||
object.id = id;
|
||||
object.read = reader.readBoolOrNull(offsets[1]);
|
||||
object.subj = reader.readString(offsets[2]);
|
||||
object.text = reader.readStringList(offsets[3]) ?? [];
|
||||
object.text = reader.readString(offsets[3]);
|
||||
object.time = reader.readString(offsets[4]);
|
||||
return object;
|
||||
}
|
||||
@@ -119,7 +113,7 @@ P _messageDeserializeProp<P>(
|
||||
case 2:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 3:
|
||||
return (reader.readStringList(offset) ?? []) as P;
|
||||
return (reader.readString(offset)) as P;
|
||||
case 4:
|
||||
return (reader.readString(offset)) as P;
|
||||
default:
|
||||
@@ -554,7 +548,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementEqualTo(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -567,7 +561,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementGreaterThan(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textGreaterThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -582,7 +576,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementLessThan(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textLessThan(
|
||||
String value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
@@ -597,7 +591,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementBetween(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textBetween(
|
||||
String lower,
|
||||
String upper, {
|
||||
bool includeLower = true,
|
||||
@@ -616,7 +610,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementStartsWith(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -629,7 +623,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementEndsWith(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
@@ -642,7 +636,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementContains(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textContains(
|
||||
String value,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -654,7 +648,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementMatches(
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textMatches(
|
||||
String pattern,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -666,7 +660,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textElementIsEmpty() {
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'text',
|
||||
@@ -675,8 +669,7 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition>
|
||||
textElementIsNotEmpty() {
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'text',
|
||||
@@ -685,90 +678,6 @@ extension MessageQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textLengthEqualTo(
|
||||
int length) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'text',
|
||||
length,
|
||||
true,
|
||||
length,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'text',
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'text',
|
||||
0,
|
||||
false,
|
||||
999999,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textLengthLessThan(
|
||||
int length, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'text',
|
||||
0,
|
||||
true,
|
||||
length,
|
||||
include,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textLengthGreaterThan(
|
||||
int length, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'text',
|
||||
length,
|
||||
include,
|
||||
999999,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> textLengthBetween(
|
||||
int lower,
|
||||
int upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'text',
|
||||
lower,
|
||||
includeLower,
|
||||
upper,
|
||||
includeUpper,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterFilterCondition> timeEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
@@ -943,6 +852,18 @@ extension MessageQuerySortBy on QueryBuilder<Message, Message, QSortBy> {
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByText() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByTextDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> sortByTime() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'time', Sort.asc);
|
||||
@@ -1006,6 +927,18 @@ extension MessageQuerySortThenBy
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByText() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByTextDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'text', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QAfterSortBy> thenByTime() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'time', Sort.asc);
|
||||
@@ -1041,9 +974,10 @@ extension MessageQueryWhereDistinct
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, Message, QDistinct> distinctByText() {
|
||||
QueryBuilder<Message, Message, QDistinct> distinctByText(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'text');
|
||||
return query.addDistinctBy(r'text', caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1081,7 +1015,7 @@ extension MessageQueryProperty
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Message, List<String>, QQueryOperations> textProperty() {
|
||||
QueryBuilder<Message, String, QQueryOperations> textProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'text');
|
||||
});
|
||||
@@ -1098,21 +1032,12 @@ extension MessageQueryProperty
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
MessageMessage _$MessageMessageFromJson(Map<String, dynamic> json) =>
|
||||
MessageMessage()
|
||||
..mssg = Message.fromJson(json['mssg'] as Map<String, dynamic>);
|
||||
|
||||
Map<String, dynamic> _$MessageMessageToJson(MessageMessage instance) =>
|
||||
<String, dynamic>{
|
||||
'mssg': instance.mssg,
|
||||
};
|
||||
|
||||
Message _$MessageFromJson(Map<String, dynamic> json) => Message()
|
||||
..id = json['id'] as int
|
||||
..time = json['time'] as String
|
||||
..from = json['from'] as String
|
||||
..subj = json['subj'] as String
|
||||
..text = (json['text'] as List<dynamic>).map((e) => e as String).toList()
|
||||
..text = json['text'] as String
|
||||
..read = json['read'] as bool?;
|
||||
|
||||
Map<String, dynamic> _$MessageToJson(Message instance) => <String, dynamic>{
|
||||
|
||||
Reference in new issue
Block a user