diff --git a/lib/content_views/messages_page.dart b/lib/content_views/messages_page.dart index d08a2cf..4b55d7d 100644 --- a/lib/content_views/messages_page.dart +++ b/lib/content_views/messages_page.dart @@ -96,25 +96,24 @@ class _MessagesPageState extends State { 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 { 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); diff --git a/lib/model/message.dart b/lib/model/message.dart index 873154b..e549157 100644 --- a/lib/model/message.dart +++ b/lib/model/message.dart @@ -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 json) => _$MessageMessageFromJson(json); - - Map toJson() => _$MessageMessageToJson(this); -} - @collection @JsonSerializable() class Message { @@ -27,7 +16,7 @@ class Message { late String subj; - late List 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).map((e) => e as String).toList(); + availableMessage.text = json['text']; return availableMessage; } else { diff --git a/lib/model/message.g.dart b/lib/model/message.g.dart index 8cec015..dd984bc 100644 --- a/lib/model/message.g.dart +++ b/lib/model/message.g.dart @@ -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

( 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 textElementEqualTo( + QueryBuilder textEqualTo( String value, { bool caseSensitive = true, }) { @@ -567,7 +561,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementGreaterThan( + QueryBuilder textGreaterThan( String value, { bool include = false, bool caseSensitive = true, @@ -582,7 +576,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementLessThan( + QueryBuilder textLessThan( String value, { bool include = false, bool caseSensitive = true, @@ -597,7 +591,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementBetween( + QueryBuilder textBetween( String lower, String upper, { bool includeLower = true, @@ -616,7 +610,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementStartsWith( + QueryBuilder textStartsWith( String value, { bool caseSensitive = true, }) { @@ -629,7 +623,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementEndsWith( + QueryBuilder textEndsWith( String value, { bool caseSensitive = true, }) { @@ -642,7 +636,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementContains( + QueryBuilder textContains( String value, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { @@ -654,7 +648,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementMatches( + QueryBuilder textMatches( String pattern, {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { @@ -666,7 +660,7 @@ extension MessageQueryFilter }); } - QueryBuilder textElementIsEmpty() { + QueryBuilder textIsEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.equalTo( property: r'text', @@ -675,8 +669,7 @@ extension MessageQueryFilter }); } - QueryBuilder - textElementIsNotEmpty() { + QueryBuilder textIsNotEmpty() { return QueryBuilder.apply(this, (query) { return query.addFilterCondition(FilterCondition.greaterThan( property: r'text', @@ -685,90 +678,6 @@ extension MessageQueryFilter }); } - QueryBuilder textLengthEqualTo( - int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'text', - length, - true, - length, - true, - ); - }); - } - - QueryBuilder textIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'text', - 0, - true, - 0, - true, - ); - }); - } - - QueryBuilder textIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'text', - 0, - false, - 999999, - true, - ); - }); - } - - QueryBuilder textLengthLessThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'text', - 0, - true, - length, - include, - ); - }); - } - - QueryBuilder textLengthGreaterThan( - int length, { - bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( - r'text', - length, - include, - 999999, - true, - ); - }); - } - - QueryBuilder 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 timeEqualTo( String value, { bool caseSensitive = true, @@ -943,6 +852,18 @@ extension MessageQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByText() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'text', Sort.asc); + }); + } + + QueryBuilder sortByTextDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'text', Sort.desc); + }); + } + QueryBuilder sortByTime() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'time', Sort.asc); @@ -1006,6 +927,18 @@ extension MessageQuerySortThenBy }); } + QueryBuilder thenByText() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'text', Sort.asc); + }); + } + + QueryBuilder thenByTextDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'text', Sort.desc); + }); + } + QueryBuilder thenByTime() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'time', Sort.asc); @@ -1041,9 +974,10 @@ extension MessageQueryWhereDistinct }); } - QueryBuilder distinctByText() { + QueryBuilder 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, QQueryOperations> textProperty() { + QueryBuilder textProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'text'); }); @@ -1098,21 +1032,12 @@ extension MessageQueryProperty // JsonSerializableGenerator // ************************************************************************** -MessageMessage _$MessageMessageFromJson(Map json) => - MessageMessage() - ..mssg = Message.fromJson(json['mssg'] as Map); - -Map _$MessageMessageToJson(MessageMessage instance) => - { - 'mssg': instance.mssg, - }; - Message _$MessageFromJson(Map 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).map((e) => e as String).toList() + ..text = json['text'] as String ..read = json['read'] as bool?; Map _$MessageToJson(Message instance) => {