From 0ab428ce2e4093c828d35afcd335ebbe7c3f41f6 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 14 May 2021 11:24:05 +0200 Subject: [PATCH 1/7] use Map for extradata --- packages/stream_chat/lib/src/api/channel.dart | 4 ++-- packages/stream_chat/lib/src/client.dart | 2 +- packages/stream_chat/lib/src/models/attachment.dart | 4 ++-- .../stream_chat/lib/src/models/attachment.g.dart | 5 +---- .../lib/src/models/attachment_file.freezed.dart | 12 ++++-------- .../lib/src/models/attachment_file.g.dart | 2 +- .../stream_chat/lib/src/models/channel_model.dart | 4 ++-- .../stream_chat/lib/src/models/channel_model.g.dart | 5 +---- packages/stream_chat/lib/src/models/event.dart | 6 +++--- packages/stream_chat/lib/src/models/event.g.dart | 10 ++-------- packages/stream_chat/lib/src/models/message.dart | 4 ++-- packages/stream_chat/lib/src/models/message.g.dart | 5 +---- packages/stream_chat/lib/src/models/own_user.dart | 2 +- packages/stream_chat/lib/src/models/own_user.g.dart | 4 +--- packages/stream_chat/lib/src/models/reaction.dart | 4 ++-- packages/stream_chat/lib/src/models/reaction.g.dart | 4 +--- packages/stream_chat/lib/src/models/user.dart | 9 ++++++--- packages/stream_chat/lib/src/models/user.g.dart | 4 +--- 18 files changed, 34 insertions(+), 56 deletions(-) diff --git a/packages/stream_chat/lib/src/api/channel.dart b/packages/stream_chat/lib/src/api/channel.dart index 5f33f966..8cc5dd2d 100644 --- a/packages/stream_chat/lib/src/api/channel.dart +++ b/packages/stream_chat/lib/src/api/channel.dart @@ -22,7 +22,7 @@ class Channel { this._client, this._type, this._id, { - Map extraData = const {}, + Map extraData = const {}, }) : _cid = _id != null ? '$_type:$_id' : null, _extraData = extraData { _client.logger.info('New Channel instance not initialized created'); @@ -630,7 +630,7 @@ class Channel { Future sendReaction( Message message, String type, { - Map extraData = const {}, + Map extraData = const {}, bool enforceUnique = false, }) async { _checkInitialized(); diff --git a/packages/stream_chat/lib/src/client.dart b/packages/stream_chat/lib/src/client.dart index c7d29737..3cabe274 100644 --- a/packages/stream_chat/lib/src/client.dart +++ b/packages/stream_chat/lib/src/client.dart @@ -1194,7 +1194,7 @@ class StreamChatClient { Channel channel( String type, { String? id, - Map extraData = const {}, + Map extraData = const {}, }) { if (id != null && state.channels.containsKey('$type:$id')) { return state.channels['$type:$id']!; diff --git a/packages/stream_chat/lib/src/models/attachment.dart b/packages/stream_chat/lib/src/models/attachment.dart index 09ea4f58..b68a1bae 100644 --- a/packages/stream_chat/lib/src/models/attachment.dart +++ b/packages/stream_chat/lib/src/models/attachment.dart @@ -114,7 +114,7 @@ class Attachment extends Equatable { includeIfNull: false, defaultValue: {}, ) - final Map extraData; + final Map extraData; /// The attachment ID. /// @@ -183,7 +183,7 @@ class Attachment extends Equatable { List? actions, AttachmentFile? file, UploadState? uploadState, - Map? extraData, + Map? extraData, }) => Attachment( id: id ?? this.id, diff --git a/packages/stream_chat/lib/src/models/attachment.g.dart b/packages/stream_chat/lib/src/models/attachment.g.dart index c42aaf5f..de129ab6 100644 --- a/packages/stream_chat/lib/src/models/attachment.g.dart +++ b/packages/stream_chat/lib/src/models/attachment.g.dart @@ -30,10 +30,7 @@ Attachment _$AttachmentFromJson(Map json) { ?.map((e) => Action.fromJson(e as Map)) .toList() ?? [], - extraData: (json['extra_data'] as Map?)?.map( - (k, e) => MapEntry(k, e as Object), - ) ?? - {}, + extraData: json['extra_data'] as Map? ?? {}, file: json['file'] == null ? null : AttachmentFile.fromJson(json['file'] as Map), diff --git a/packages/stream_chat/lib/src/models/attachment_file.freezed.dart b/packages/stream_chat/lib/src/models/attachment_file.freezed.dart index a6c5e0c6..5d7075c3 100644 --- a/packages/stream_chat/lib/src/models/attachment_file.freezed.dart +++ b/packages/stream_chat/lib/src/models/attachment_file.freezed.dart @@ -132,9 +132,8 @@ class _$PreparingCopyWithImpl<$Res> extends _$UploadStateCopyWithImpl<$Res> Preparing get _value => super._value as Preparing; } -@JsonSerializable() - /// @nodoc +@JsonSerializable() class _$Preparing implements Preparing { const _$Preparing(); @@ -253,9 +252,8 @@ class _$InProgressCopyWithImpl<$Res> extends _$UploadStateCopyWithImpl<$Res> } } -@JsonSerializable() - /// @nodoc +@JsonSerializable() class _$InProgress implements InProgress { const _$InProgress({required this.uploaded, required this.total}); @@ -382,9 +380,8 @@ class _$SuccessCopyWithImpl<$Res> extends _$UploadStateCopyWithImpl<$Res> Success get _value => super._value as Success; } -@JsonSerializable() - /// @nodoc +@JsonSerializable() class _$Success implements Success { const _$Success(); @@ -497,9 +494,8 @@ class _$FailedCopyWithImpl<$Res> extends _$UploadStateCopyWithImpl<$Res> } } -@JsonSerializable() - /// @nodoc +@JsonSerializable() class _$Failed implements Failed { const _$Failed({required this.error}); diff --git a/packages/stream_chat/lib/src/models/attachment_file.g.dart b/packages/stream_chat/lib/src/models/attachment_file.g.dart index 55fcea6c..5844ae16 100644 --- a/packages/stream_chat/lib/src/models/attachment_file.g.dart +++ b/packages/stream_chat/lib/src/models/attachment_file.g.dart @@ -8,10 +8,10 @@ part of 'attachment_file.dart'; AttachmentFile _$AttachmentFileFromJson(Map json) { return AttachmentFile( + size: json['size'] as int?, path: json['path'] as String?, name: json['name'] as String?, bytes: _fromString(json['bytes'] as String?), - size: json['size'] as int?, ); } diff --git a/packages/stream_chat/lib/src/models/channel_model.dart b/packages/stream_chat/lib/src/models/channel_model.dart index 14380592..41230bf7 100644 --- a/packages/stream_chat/lib/src/models/channel_model.dart +++ b/packages/stream_chat/lib/src/models/channel_model.dart @@ -87,7 +87,7 @@ class ChannelModel { includeIfNull: false, defaultValue: {}, ) - final Map extraData; + final Map extraData; /// The team the channel belongs to @JsonKey(includeIfNull: false, toJson: Serialization.readOnly) @@ -132,7 +132,7 @@ class ChannelModel { DateTime? updatedAt, DateTime? deletedAt, int? memberCount, - Map? extraData, + Map? extraData, String? team, }) => ChannelModel( diff --git a/packages/stream_chat/lib/src/models/channel_model.g.dart b/packages/stream_chat/lib/src/models/channel_model.g.dart index 78e93910..4bde3d4a 100644 --- a/packages/stream_chat/lib/src/models/channel_model.g.dart +++ b/packages/stream_chat/lib/src/models/channel_model.g.dart @@ -31,10 +31,7 @@ ChannelModel _$ChannelModelFromJson(Map json) { ? null : DateTime.parse(json['deleted_at'] as String), memberCount: json['member_count'] as int? ?? 0, - extraData: (json['extra_data'] as Map?)?.map( - (k, e) => MapEntry(k, e as Object), - ) ?? - {}, + extraData: json['extra_data'] as Map? ?? {}, team: json['team'] as String?, ); } diff --git a/packages/stream_chat/lib/src/models/event.dart b/packages/stream_chat/lib/src/models/event.dart index 1675197d..b4ee9c1d 100644 --- a/packages/stream_chat/lib/src/models/event.dart +++ b/packages/stream_chat/lib/src/models/event.dart @@ -93,7 +93,7 @@ class Event { /// Map of custom channel extraData @JsonKey(defaultValue: {}) - final Map extraData; + final Map extraData; /// Known top level fields. /// Useful for [Serialization] methods. @@ -140,7 +140,7 @@ class Event { int? unreadChannels, bool? online, String? parentId, - Map? extraData, + Map? extraData, }) => Event( type: type ?? this.type, @@ -180,7 +180,7 @@ class EventChannel extends ChannelModel { required DateTime updatedAt, DateTime? deletedAt, required int memberCount, - Map? extraData, + Map? extraData, }) : super( id: id, type: type, diff --git a/packages/stream_chat/lib/src/models/event.g.dart b/packages/stream_chat/lib/src/models/event.g.dart index b76c675c..aba142f8 100644 --- a/packages/stream_chat/lib/src/models/event.g.dart +++ b/packages/stream_chat/lib/src/models/event.g.dart @@ -38,10 +38,7 @@ Event _$EventFromJson(Map json) { channelId: json['channel_id'] as String?, channelType: json['channel_type'] as String?, parentId: json['parent_id'] as String?, - extraData: (json['extra_data'] as Map?)?.map( - (k, e) => MapEntry(k, e as Object), - ) ?? - {}, + extraData: json['extra_data'] as Map? ?? {}, isLocal: json['is_local'] as bool? ?? false, ); } @@ -89,10 +86,7 @@ EventChannel _$EventChannelFromJson(Map json) { ? null : DateTime.parse(json['deleted_at'] as String), memberCount: json['member_count'] as int? ?? 0, - extraData: (json['extra_data'] as Map?)?.map( - (k, e) => MapEntry(k, e as Object), - ) ?? - {}, + extraData: json['extra_data'] as Map? ?? {}, ); } diff --git a/packages/stream_chat/lib/src/models/message.dart b/packages/stream_chat/lib/src/models/message.dart index cec591c0..f928ce3a 100644 --- a/packages/stream_chat/lib/src/models/message.dart +++ b/packages/stream_chat/lib/src/models/message.dart @@ -208,7 +208,7 @@ class Message extends Equatable { includeIfNull: false, defaultValue: {}, ) - final Map extraData; + final Map extraData; /// True if the message is a system info bool get isSystem => type == 'system'; @@ -289,7 +289,7 @@ class Message extends Equatable { DateTime? pinnedAt, Object? pinExpires = _pinExpires, User? pinnedBy, - Map? extraData, + Map? extraData, MessageSendingStatus? status, bool? skipPush, }) { diff --git a/packages/stream_chat/lib/src/models/message.g.dart b/packages/stream_chat/lib/src/models/message.g.dart index 4168777a..ca094a83 100644 --- a/packages/stream_chat/lib/src/models/message.g.dart +++ b/packages/stream_chat/lib/src/models/message.g.dart @@ -63,10 +63,7 @@ Message _$MessageFromJson(Map json) { pinnedBy: json['pinned_by'] == null ? null : User.fromJson(json['pinned_by'] as Map), - extraData: (json['extra_data'] as Map?)?.map( - (k, e) => MapEntry(k, e as Object), - ) ?? - {}, + extraData: json['extra_data'] as Map? ?? {}, deletedAt: json['deleted_at'] == null ? null : DateTime.parse(json['deleted_at'] as String), diff --git a/packages/stream_chat/lib/src/models/own_user.dart b/packages/stream_chat/lib/src/models/own_user.dart index 292e0f4a..a93af19a 100644 --- a/packages/stream_chat/lib/src/models/own_user.dart +++ b/packages/stream_chat/lib/src/models/own_user.dart @@ -23,7 +23,7 @@ class OwnUser extends User { DateTime? updatedAt, DateTime? lastActive, bool online = false, - Map extraData = const {}, + Map extraData = const {}, bool banned = false, }) : super( id: id, diff --git a/packages/stream_chat/lib/src/models/own_user.g.dart b/packages/stream_chat/lib/src/models/own_user.g.dart index a5c27402..760edc01 100644 --- a/packages/stream_chat/lib/src/models/own_user.g.dart +++ b/packages/stream_chat/lib/src/models/own_user.g.dart @@ -34,9 +34,7 @@ OwnUser _$OwnUserFromJson(Map json) { ? null : DateTime.parse(json['last_active'] as String), online: json['online'] as bool? ?? false, - extraData: (json['extra_data'] as Map).map( - (k, e) => MapEntry(k, e as Object), - ), + extraData: json['extra_data'] as Map? ?? {}, banned: json['banned'] as bool? ?? false, ); } diff --git a/packages/stream_chat/lib/src/models/reaction.dart b/packages/stream_chat/lib/src/models/reaction.dart index 0e60e281..c619af76 100644 --- a/packages/stream_chat/lib/src/models/reaction.dart +++ b/packages/stream_chat/lib/src/models/reaction.dart @@ -50,7 +50,7 @@ class Reaction { /// Reaction custom extraData @JsonKey(includeIfNull: false) - final Map? extraData; + final Map? extraData; /// Map of custom user extraData static const topLevelFields = [ @@ -75,7 +75,7 @@ class Reaction { User? user, String? userId, int? score, - Map? extraData, + Map? extraData, }) => Reaction( messageId: messageId ?? this.messageId, diff --git a/packages/stream_chat/lib/src/models/reaction.g.dart b/packages/stream_chat/lib/src/models/reaction.g.dart index 24b60830..963b4d21 100644 --- a/packages/stream_chat/lib/src/models/reaction.g.dart +++ b/packages/stream_chat/lib/src/models/reaction.g.dart @@ -18,9 +18,7 @@ Reaction _$ReactionFromJson(Map json) { : User.fromJson(json['user'] as Map), userId: json['user_id'] as String?, score: json['score'] as int? ?? 0, - extraData: (json['extra_data'] as Map?)?.map( - (k, e) => MapEntry(k, e as Object), - ), + extraData: json['extra_data'] as Map?, ); } diff --git a/packages/stream_chat/lib/src/models/user.dart b/packages/stream_chat/lib/src/models/user.dart index 2cb8f8ed..9335f8c8 100644 --- a/packages/stream_chat/lib/src/models/user.dart +++ b/packages/stream_chat/lib/src/models/user.dart @@ -74,8 +74,11 @@ class User { final bool banned; /// Map of custom user extraData - @JsonKey(includeIfNull: false) - final Map extraData; + @JsonKey( + includeIfNull: false, + defaultValue: {}, + ) + final Map extraData; @override int get hashCode => id.hashCode; @@ -107,7 +110,7 @@ class User { DateTime? updatedAt, DateTime? lastActive, bool? online, - Map? extraData, + Map? extraData, bool? banned, List? teams, }) => diff --git a/packages/stream_chat/lib/src/models/user.g.dart b/packages/stream_chat/lib/src/models/user.g.dart index 11538395..befcac03 100644 --- a/packages/stream_chat/lib/src/models/user.g.dart +++ b/packages/stream_chat/lib/src/models/user.g.dart @@ -20,9 +20,7 @@ User _$UserFromJson(Map json) { ? null : DateTime.parse(json['last_active'] as String), online: json['online'] as bool? ?? false, - extraData: (json['extra_data'] as Map).map( - (k, e) => MapEntry(k, e as Object), - ), + extraData: json['extra_data'] as Map? ?? {}, banned: json['banned'] as bool? ?? false, teams: (json['teams'] as List?)?.map((e) => e as String).toList() ?? From a46186e6a7176e8026b9664d9a9ba0590da42669 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 14 May 2021 11:28:32 +0200 Subject: [PATCH 2/7] use Map for extradata in persistence --- .../lib/src/db/moor_chat_database.g.dart | 120 +++++++++--------- .../lib/src/entity/channels.dart | 2 +- .../lib/src/entity/messages.dart | 2 +- .../lib/src/entity/reactions.dart | 2 +- .../lib/src/entity/users.dart | 2 +- 5 files changed, 63 insertions(+), 65 deletions(-) diff --git a/packages/stream_chat_persistence/lib/src/db/moor_chat_database.g.dart b/packages/stream_chat_persistence/lib/src/db/moor_chat_database.g.dart index 8220ee4e..b8d404b2 100644 --- a/packages/stream_chat_persistence/lib/src/db/moor_chat_database.g.dart +++ b/packages/stream_chat_persistence/lib/src/db/moor_chat_database.g.dart @@ -42,22 +42,20 @@ class ChannelEntity extends DataClass implements Insertable { final String? createdById; /// Map of custom channel extraData - final Map? extraData; - - ChannelEntity({ - required this.id, - required this.type, - required this.cid, - required this.config, - required this.frozen, - this.lastMessageAt, - required this.createdAt, - required this.updatedAt, - this.deletedAt, - required this.memberCount, - this.createdById, - this.extraData, - }); + final Map? extraData; + ChannelEntity( + {required this.id, + required this.type, + required this.cid, + required this.config, + required this.frozen, + this.lastMessageAt, + required this.createdAt, + required this.updatedAt, + this.deletedAt, + required this.memberCount, + this.createdById, + this.extraData}); factory ChannelEntity.fromData( Map data, GeneratedDatabase db, {String? prefix}) { @@ -135,7 +133,7 @@ class ChannelEntity extends DataClass implements Insertable { deletedAt: serializer.fromJson(json['deletedAt']), memberCount: serializer.fromJson(json['memberCount']), createdById: serializer.fromJson(json['createdById']), - extraData: serializer.fromJson?>(json['extraData']), + extraData: serializer.fromJson?>(json['extraData']), ); } @override @@ -153,7 +151,7 @@ class ChannelEntity extends DataClass implements Insertable { 'deletedAt': serializer.toJson(deletedAt), 'memberCount': serializer.toJson(memberCount), 'createdById': serializer.toJson(createdById), - 'extraData': serializer.toJson?>(extraData), + 'extraData': serializer.toJson?>(extraData), }; } @@ -169,7 +167,7 @@ class ChannelEntity extends DataClass implements Insertable { Value deletedAt = const Value.absent(), int? memberCount, Value createdById = const Value.absent(), - Value?> extraData = const Value.absent()}) => + Value?> extraData = const Value.absent()}) => ChannelEntity( id: id ?? this.id, type: type ?? this.type, @@ -257,7 +255,7 @@ class ChannelsCompanion extends UpdateCompanion { final Value deletedAt; final Value memberCount; final Value createdById; - final Value?> extraData; + final Value?> extraData; const ChannelsCompanion({ this.id = const Value.absent(), this.type = const Value.absent(), @@ -301,7 +299,7 @@ class ChannelsCompanion extends UpdateCompanion { Expression? deletedAt, Expression? memberCount, Expression? createdById, - Expression?>? extraData, + Expression?>? extraData, }) { return RawValuesInsertable({ if (id != null) 'id': id, @@ -331,7 +329,7 @@ class ChannelsCompanion extends UpdateCompanion { Value? deletedAt, Value? memberCount, Value? createdById, - Value?>? extraData}) { + Value?>? extraData}) { return ChannelsCompanion( id: id ?? this.id, type: type ?? this.type, @@ -638,8 +636,8 @@ class $ChannelsTable extends Channels static TypeConverter, String> $converter0 = MapConverter(); - static TypeConverter, String> $converter1 = - MapConverter(); + static TypeConverter, String> $converter1 = + MapConverter(); } class MessageEntity extends DataClass implements Insertable { @@ -714,7 +712,7 @@ class MessageEntity extends DataClass implements Insertable { final String? channelCid; /// Message custom extraData - final Map? extraData; + final Map? extraData; MessageEntity( {required this.id, this.messageText, @@ -901,7 +899,7 @@ class MessageEntity extends DataClass implements Insertable { pinExpires: serializer.fromJson(json['pinExpires']), pinnedByUserId: serializer.fromJson(json['pinnedByUserId']), channelCid: serializer.fromJson(json['channelCid']), - extraData: serializer.fromJson?>(json['extraData']), + extraData: serializer.fromJson?>(json['extraData']), ); } @override @@ -931,7 +929,7 @@ class MessageEntity extends DataClass implements Insertable { 'pinExpires': serializer.toJson(pinExpires), 'pinnedByUserId': serializer.toJson(pinnedByUserId), 'channelCid': serializer.toJson(channelCid), - 'extraData': serializer.toJson?>(extraData), + 'extraData': serializer.toJson?>(extraData), }; } @@ -959,7 +957,7 @@ class MessageEntity extends DataClass implements Insertable { Value pinExpires = const Value.absent(), Value pinnedByUserId = const Value.absent(), Value channelCid = const Value.absent(), - Value?> extraData = const Value.absent()}) => + Value?> extraData = const Value.absent()}) => MessageEntity( id: id ?? this.id, messageText: messageText.present ? messageText.value : this.messageText, @@ -1121,7 +1119,7 @@ class MessagesCompanion extends UpdateCompanion { final Value pinExpires; final Value pinnedByUserId; final Value channelCid; - final Value?> extraData; + final Value?> extraData; const MessagesCompanion({ this.id = const Value.absent(), this.messageText = const Value.absent(), @@ -1200,7 +1198,7 @@ class MessagesCompanion extends UpdateCompanion { Expression? pinExpires, Expression? pinnedByUserId, Expression? channelCid, - Expression?>? extraData, + Expression?>? extraData, }) { return RawValuesInsertable({ if (id != null) 'id': id, @@ -1254,7 +1252,7 @@ class MessagesCompanion extends UpdateCompanion { Value? pinExpires, Value? pinnedByUserId, Value? channelCid, - Value?>? extraData}) { + Value?>? extraData}) { return MessagesCompanion( id: id ?? this.id, messageText: messageText ?? this.messageText, @@ -1818,8 +1816,8 @@ class $MessagesTable extends Messages MapConverter(); static TypeConverter, String> $converter4 = MapConverter(); - static TypeConverter, String> $converter5 = - MapConverter(); + static TypeConverter, String> $converter5 = + MapConverter(); } class PinnedMessageEntity extends DataClass @@ -1895,7 +1893,7 @@ class PinnedMessageEntity extends DataClass final String? channelCid; /// Message custom extraData - final Map? extraData; + final Map? extraData; PinnedMessageEntity( {required this.id, this.messageText, @@ -2082,7 +2080,7 @@ class PinnedMessageEntity extends DataClass pinExpires: serializer.fromJson(json['pinExpires']), pinnedByUserId: serializer.fromJson(json['pinnedByUserId']), channelCid: serializer.fromJson(json['channelCid']), - extraData: serializer.fromJson?>(json['extraData']), + extraData: serializer.fromJson?>(json['extraData']), ); } @override @@ -2112,7 +2110,7 @@ class PinnedMessageEntity extends DataClass 'pinExpires': serializer.toJson(pinExpires), 'pinnedByUserId': serializer.toJson(pinnedByUserId), 'channelCid': serializer.toJson(channelCid), - 'extraData': serializer.toJson?>(extraData), + 'extraData': serializer.toJson?>(extraData), }; } @@ -2140,7 +2138,7 @@ class PinnedMessageEntity extends DataClass Value pinExpires = const Value.absent(), Value pinnedByUserId = const Value.absent(), Value channelCid = const Value.absent(), - Value?> extraData = const Value.absent()}) => + Value?> extraData = const Value.absent()}) => PinnedMessageEntity( id: id ?? this.id, messageText: messageText.present ? messageText.value : this.messageText, @@ -2302,7 +2300,7 @@ class PinnedMessagesCompanion extends UpdateCompanion { final Value pinExpires; final Value pinnedByUserId; final Value channelCid; - final Value?> extraData; + final Value?> extraData; const PinnedMessagesCompanion({ this.id = const Value.absent(), this.messageText = const Value.absent(), @@ -2381,7 +2379,7 @@ class PinnedMessagesCompanion extends UpdateCompanion { Expression? pinExpires, Expression? pinnedByUserId, Expression? channelCid, - Expression?>? extraData, + Expression?>? extraData, }) { return RawValuesInsertable({ if (id != null) 'id': id, @@ -2435,7 +2433,7 @@ class PinnedMessagesCompanion extends UpdateCompanion { Value? pinExpires, Value? pinnedByUserId, Value? channelCid, - Value?>? extraData}) { + Value?>? extraData}) { return PinnedMessagesCompanion( id: id ?? this.id, messageText: messageText ?? this.messageText, @@ -3000,8 +2998,8 @@ class $PinnedMessagesTable extends PinnedMessages MapConverter(); static TypeConverter, String> $converter4 = MapConverter(); - static TypeConverter, String> $converter5 = - MapConverter(); + static TypeConverter, String> $converter5 = + MapConverter(); } class ReactionEntity extends DataClass implements Insertable { @@ -3021,7 +3019,7 @@ class ReactionEntity extends DataClass implements Insertable { final int score; /// Reaction custom extraData - final Map? extraData; + final Map? extraData; ReactionEntity( {required this.userId, required this.messageId, @@ -3073,7 +3071,7 @@ class ReactionEntity extends DataClass implements Insertable { type: serializer.fromJson(json['type']), createdAt: serializer.fromJson(json['createdAt']), score: serializer.fromJson(json['score']), - extraData: serializer.fromJson?>(json['extraData']), + extraData: serializer.fromJson?>(json['extraData']), ); } @override @@ -3085,7 +3083,7 @@ class ReactionEntity extends DataClass implements Insertable { 'type': serializer.toJson(type), 'createdAt': serializer.toJson(createdAt), 'score': serializer.toJson(score), - 'extraData': serializer.toJson?>(extraData), + 'extraData': serializer.toJson?>(extraData), }; } @@ -3095,7 +3093,7 @@ class ReactionEntity extends DataClass implements Insertable { String? type, DateTime? createdAt, int? score, - Value?> extraData = const Value.absent()}) => + Value?> extraData = const Value.absent()}) => ReactionEntity( userId: userId ?? this.userId, messageId: messageId ?? this.messageId, @@ -3144,7 +3142,7 @@ class ReactionsCompanion extends UpdateCompanion { final Value type; final Value createdAt; final Value score; - final Value?> extraData; + final Value?> extraData; const ReactionsCompanion({ this.userId = const Value.absent(), this.messageId = const Value.absent(), @@ -3169,7 +3167,7 @@ class ReactionsCompanion extends UpdateCompanion { Expression? type, Expression? createdAt, Expression? score, - Expression?>? extraData, + Expression?>? extraData, }) { return RawValuesInsertable({ if (userId != null) 'user_id': userId, @@ -3187,7 +3185,7 @@ class ReactionsCompanion extends UpdateCompanion { Value? type, Value? createdAt, Value? score, - Value?>? extraData}) { + Value?>? extraData}) { return ReactionsCompanion( userId: userId ?? this.userId, messageId: messageId ?? this.messageId, @@ -3357,8 +3355,8 @@ class $ReactionsTable extends Reactions return $ReactionsTable(_db, alias); } - static TypeConverter, String> $converter0 = - MapConverter(); + static TypeConverter, String> $converter0 = + MapConverter(); } class UserEntity extends DataClass implements Insertable { @@ -3384,7 +3382,7 @@ class UserEntity extends DataClass implements Insertable { final bool banned; /// Map of custom user extraData - final Map extraData; + final Map extraData; UserEntity( {required this.id, this.role, @@ -3449,7 +3447,7 @@ class UserEntity extends DataClass implements Insertable { lastActive: serializer.fromJson(json['lastActive']), online: serializer.fromJson(json['online']), banned: serializer.fromJson(json['banned']), - extraData: serializer.fromJson>(json['extraData']), + extraData: serializer.fromJson>(json['extraData']), ); } @override @@ -3463,7 +3461,7 @@ class UserEntity extends DataClass implements Insertable { 'lastActive': serializer.toJson(lastActive), 'online': serializer.toJson(online), 'banned': serializer.toJson(banned), - 'extraData': serializer.toJson>(extraData), + 'extraData': serializer.toJson>(extraData), }; } @@ -3475,7 +3473,7 @@ class UserEntity extends DataClass implements Insertable { Value lastActive = const Value.absent(), bool? online, bool? banned, - Map? extraData}) => + Map? extraData}) => UserEntity( id: id ?? this.id, role: role.present ? role.value : this.role, @@ -3536,7 +3534,7 @@ class UsersCompanion extends UpdateCompanion { final Value lastActive; final Value online; final Value banned; - final Value> extraData; + final Value> extraData; const UsersCompanion({ this.id = const Value.absent(), this.role = const Value.absent(), @@ -3555,7 +3553,7 @@ class UsersCompanion extends UpdateCompanion { this.lastActive = const Value.absent(), this.online = const Value.absent(), this.banned = const Value.absent(), - required Map extraData, + required Map extraData, }) : id = Value(id), extraData = Value(extraData); static Insertable custom({ @@ -3566,7 +3564,7 @@ class UsersCompanion extends UpdateCompanion { Expression? lastActive, Expression? online, Expression? banned, - Expression>? extraData, + Expression>? extraData, }) { return RawValuesInsertable({ if (id != null) 'id': id, @@ -3588,7 +3586,7 @@ class UsersCompanion extends UpdateCompanion { Value? lastActive, Value? online, Value? banned, - Value>? extraData}) { + Value>? extraData}) { return UsersCompanion( id: id ?? this.id, role: role ?? this.role, @@ -3791,8 +3789,8 @@ class $UsersTable extends Users with TableInfo<$UsersTable, UserEntity> { return $UsersTable(_db, alias); } - static TypeConverter, String> $converter0 = - MapConverter(); + static TypeConverter, String> $converter0 = + MapConverter(); } class MemberEntity extends DataClass implements Insertable { diff --git a/packages/stream_chat_persistence/lib/src/entity/channels.dart b/packages/stream_chat_persistence/lib/src/entity/channels.dart index e6c280ed..2c65719b 100644 --- a/packages/stream_chat_persistence/lib/src/entity/channels.dart +++ b/packages/stream_chat_persistence/lib/src/entity/channels.dart @@ -39,7 +39,7 @@ class Channels extends Table { TextColumn get createdById => text().nullable()(); /// Map of custom channel extraData - TextColumn get extraData => text().nullable().map(MapConverter())(); + TextColumn get extraData => text().nullable().map(MapConverter())(); @override Set get primaryKey => {cid}; diff --git a/packages/stream_chat_persistence/lib/src/entity/messages.dart b/packages/stream_chat_persistence/lib/src/entity/messages.dart index 7cb1326d..4006d6ce 100644 --- a/packages/stream_chat_persistence/lib/src/entity/messages.dart +++ b/packages/stream_chat_persistence/lib/src/entity/messages.dart @@ -81,7 +81,7 @@ class Messages extends Table { 'NULLABLE REFERENCES channels(cid) ON DELETE CASCADE')(); /// Message custom extraData - TextColumn get extraData => text().nullable().map(MapConverter())(); + TextColumn get extraData => text().nullable().map(MapConverter())(); @override Set get primaryKey => {id}; diff --git a/packages/stream_chat_persistence/lib/src/entity/reactions.dart b/packages/stream_chat_persistence/lib/src/entity/reactions.dart index 2b7d12b5..62380408 100644 --- a/packages/stream_chat_persistence/lib/src/entity/reactions.dart +++ b/packages/stream_chat_persistence/lib/src/entity/reactions.dart @@ -22,7 +22,7 @@ class Reactions extends Table { IntColumn get score => integer().withDefault(const Constant(0))(); /// Reaction custom extraData - TextColumn get extraData => text().nullable().map(MapConverter())(); + TextColumn get extraData => text().nullable().map(MapConverter())(); @override Set get primaryKey => { diff --git a/packages/stream_chat_persistence/lib/src/entity/users.dart b/packages/stream_chat_persistence/lib/src/entity/users.dart index 49fb4687..303092c9 100644 --- a/packages/stream_chat_persistence/lib/src/entity/users.dart +++ b/packages/stream_chat_persistence/lib/src/entity/users.dart @@ -27,7 +27,7 @@ class Users extends Table { BoolColumn get banned => boolean().withDefault(const Constant(false))(); /// Map of custom user extraData - TextColumn get extraData => text().map(MapConverter())(); + TextColumn get extraData => text().map(MapConverter())(); @override Set get primaryKey => {id}; From af59b7af8a20e902353d5213beffb65010ecda41 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 14 May 2021 11:44:48 +0200 Subject: [PATCH 3/7] map correctly mentioned users --- .../stream_chat_persistence/lib/src/mapper/message_mapper.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/stream_chat_persistence/lib/src/mapper/message_mapper.dart b/packages/stream_chat_persistence/lib/src/mapper/message_mapper.dart index c97cc92d..558c6e45 100644 --- a/packages/stream_chat_persistence/lib/src/mapper/message_mapper.dart +++ b/packages/stream_chat_persistence/lib/src/mapper/message_mapper.dart @@ -42,6 +42,8 @@ extension MessageEntityX on MessageEntity { pinnedAt: pinnedAt, pinExpires: pinExpires, pinnedBy: pinnedBy, + mentionedUsers: + mentionedUsers.map((e) => User.fromJson(jsonDecode(e))).toList(), ); } From 084d339cc4115609d331480ac926214a0c00287d Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 14 May 2021 12:55:34 +0200 Subject: [PATCH 4/7] add tests --- .../test/src/mapper/message_mapper_test.dart | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart b/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart index f73102f8..2c852ff2 100644 --- a/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart +++ b/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart @@ -48,7 +48,9 @@ void main() { (prev, curr) => prev?..update(curr.type, (value) => value + 1, ifAbsent: () => 1), ), - mentionedUsers: const [], + mentionedUsers: [ + jsonEncode(User(id: 'testuser')), + ], status: MessageSendingStatus.sent, updatedAt: DateTime.now(), extraData: {'extra_test_data': 'extraData'}, @@ -77,6 +79,11 @@ void main() { expect(message.createdAt, isSameDateAs(entity.createdAt)); expect(message.shadowed, entity.shadowed); expect(message.showInChannel, entity.showInChannel); + for (var i = 0; i < message.mentionedUsers.length; i++) { + final entityMentionedUser = + User.fromJson(jsonDecode(entity.mentionedUsers[i])); + expect(message.mentionedUsers[i].id, entityMentionedUser.id); + } expect(message.replyCount, entity.replyCount); expect(message.reactionScores, entity.reactionScores); expect(message.reactionCounts, entity.reactionCounts); @@ -135,6 +142,9 @@ void main() { shadowed: math.Random().nextBool(), showInChannel: math.Random().nextBool(), replyCount: 33, + mentionedUsers: [ + User(id: 'testuser'), + ], reactionScores: {for (final r in reactions) r.type: r.score}, reactionCounts: reactions.fold( {}, @@ -163,6 +173,8 @@ void main() { expect(entity.shadowed, message.shadowed); expect(entity.showInChannel, message.showInChannel); expect(entity.replyCount, message.replyCount); + expect(entity.mentionedUsers, + message.mentionedUsers.map((e) => jsonEncode(e)).toList()); expect(entity.reactionScores, message.reactionScores); expect(entity.reactionCounts, message.reactionCounts); expect(entity.status, message.status); From 3bd11d0c45038288ca7dd2d3960de871f18ff5dd Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 14 May 2021 13:39:49 +0200 Subject: [PATCH 5/7] fix reaction extradata --- packages/stream_chat/lib/src/models/reaction.dart | 9 ++++++--- packages/stream_chat/lib/src/models/reaction.g.dart | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat/lib/src/models/reaction.dart b/packages/stream_chat/lib/src/models/reaction.dart index c619af76..85697204 100644 --- a/packages/stream_chat/lib/src/models/reaction.dart +++ b/packages/stream_chat/lib/src/models/reaction.dart @@ -15,7 +15,7 @@ class Reaction { this.user, String? userId, this.score = 0, - this.extraData, + this.extraData = const {}, }) : userId = userId ?? user?.id, createdAt = createdAt ?? DateTime.now(); @@ -49,8 +49,11 @@ class Reaction { final String? userId; /// Reaction custom extraData - @JsonKey(includeIfNull: false) - final Map? extraData; + @JsonKey( + includeIfNull: false, + defaultValue: {}, + ) + final Map extraData; /// Map of custom user extraData static const topLevelFields = [ diff --git a/packages/stream_chat/lib/src/models/reaction.g.dart b/packages/stream_chat/lib/src/models/reaction.g.dart index 963b4d21..3e92150d 100644 --- a/packages/stream_chat/lib/src/models/reaction.g.dart +++ b/packages/stream_chat/lib/src/models/reaction.g.dart @@ -18,7 +18,7 @@ Reaction _$ReactionFromJson(Map json) { : User.fromJson(json['user'] as Map), userId: json['user_id'] as String?, score: json['score'] as int? ?? 0, - extraData: json['extra_data'] as Map?, + extraData: json['extra_data'] as Map? ?? {}, ); } @@ -38,6 +38,6 @@ Map _$ReactionToJson(Reaction instance) { writeNotNull('user', readonly(instance.user)); val['score'] = instance.score; writeNotNull('user_id', readonly(instance.userId)); - writeNotNull('extra_data', instance.extraData); + val['extra_data'] = instance.extraData; return val; } From 527e979660636b0d5154504beffab8d97cbb88c1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 14 May 2021 13:48:36 +0200 Subject: [PATCH 6/7] fix reaction extradata in persistence --- .../stream_chat_persistence/lib/src/mapper/reaction_mapper.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_persistence/lib/src/mapper/reaction_mapper.dart b/packages/stream_chat_persistence/lib/src/mapper/reaction_mapper.dart index 003802b9..62a0c427 100644 --- a/packages/stream_chat_persistence/lib/src/mapper/reaction_mapper.dart +++ b/packages/stream_chat_persistence/lib/src/mapper/reaction_mapper.dart @@ -5,7 +5,7 @@ import 'package:stream_chat_persistence/src/db/moor_chat_database.dart'; extension ReactionEntityX on ReactionEntity { /// Maps a [ReactionEntity] into [Reaction] Reaction toReaction({User? user}) => Reaction( - extraData: extraData, + extraData: extraData ?? {}, type: type, createdAt: createdAt, userId: userId, From a04c46090aca55bebdf4c9ac19e6517f52095f83 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 14 May 2021 14:03:31 +0200 Subject: [PATCH 7/7] bump db version --- .../stream_chat_persistence/lib/src/db/moor_chat_database.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_persistence/lib/src/db/moor_chat_database.dart b/packages/stream_chat_persistence/lib/src/db/moor_chat_database.dart index 622e0a61..fbb53fd3 100644 --- a/packages/stream_chat_persistence/lib/src/db/moor_chat_database.dart +++ b/packages/stream_chat_persistence/lib/src/db/moor_chat_database.dart @@ -57,7 +57,7 @@ class MoorChatDatabase extends _$MoorChatDatabase { // you should bump this number whenever you change or add a table definition. @override - int get schemaVersion => 2; + int get schemaVersion => 3; @override MigrationStrategy get migration => MigrationStrategy(