chore: remove the TranslatedMessage class and add the i18n field to the Message class

Tests have been updated to reflect the removal of this class
This commit is contained in:
groovinchip
2021-07-20 14:35:15 -04:00
parent c4a173f522
commit c3312c2da2
8 changed files with 35 additions and 56 deletions
@@ -75,7 +75,7 @@ class QueryChannelsResponse extends _BaseResponse {
@JsonSerializable(createToJson: false)
class TranslateMessageResponse extends _BaseResponse {
/// Translated message
late TranslatedMessage message;
late Message message;
/// Create a new instance from a json
static TranslateMessageResponse fromJson(Map<String, dynamic> json) =>
@@ -47,8 +47,7 @@ TranslateMessageResponse _$TranslateMessageResponseFromJson(
Map<String, dynamic> json) {
return TranslateMessageResponse()
..duration = json['duration'] as String?
..message =
TranslatedMessage.fromJson(json['message'] as Map<String, dynamic>);
..message = Message.fromJson(json['message'] as Map<String, dynamic>);
}
QueryMembersResponse _$QueryMembersResponseFromJson(Map<String, dynamic> json) {
@@ -2,8 +2,8 @@ import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:stream_chat/src/core/models/attachment.dart';
import 'package:stream_chat/src/core/models/reaction.dart';
import 'package:stream_chat/src/core/util/serializer.dart';
import 'package:stream_chat/src/core/models/user.dart';
import 'package:stream_chat/src/core/util/serializer.dart';
import 'package:uuid/uuid.dart';
part 'message.g.dart';
@@ -73,6 +73,7 @@ class Message extends Equatable {
this.extraData = const {},
this.deletedAt,
this.status = MessageSendingStatus.sent,
this.i18n,
}) : id = id ?? const Uuid().v4(),
pinExpires = pinExpires?.toUtc(),
createdAt = createdAt ?? DateTime.now(),
@@ -218,6 +219,9 @@ class Message extends Equatable {
@JsonKey(includeIfNull: false, toJson: Serializer.readOnly)
final DateTime? deletedAt;
/// A Map of
final Map<String, String>? i18n;
/// Known top level fields.
/// Useful for [Serializer] methods.
static const topLevelFields = [
@@ -248,6 +252,7 @@ class Message extends Equatable {
'pinned_at',
'pin_expires',
'pinned_by',
'i18n',
];
/// Serialize to json
@@ -285,6 +290,7 @@ class Message extends Equatable {
User? pinnedBy,
Map<String, Object?>? extraData,
MessageSendingStatus? status,
Map<String, String>? i18n,
}) {
assert(() {
if (pinExpires is! DateTime &&
@@ -324,6 +330,7 @@ class Message extends Equatable {
pinnedBy: pinnedBy ?? this.pinnedBy,
pinExpires:
pinExpires == _pinExpires ? this.pinExpires : pinExpires as DateTime?,
i18n: i18n ?? this.i18n,
);
}
@@ -358,6 +365,7 @@ class Message extends Equatable {
pinnedAt: other.pinnedAt,
pinExpires: other.pinExpires,
pinnedBy: other.pinnedBy,
i18n: other.i18n,
);
@override
@@ -390,35 +398,6 @@ class Message extends Equatable {
pinnedBy,
extraData,
status,
i18n,
];
}
/// A translated message
/// It has an additional property called [i18n]
@JsonSerializable()
class TranslatedMessage extends Message {
/// Constructor used for json serialization
TranslatedMessage(this.i18n) : super();
/// Create a new instance from a json
factory TranslatedMessage.fromJson(Map<String, dynamic> json) =>
_$TranslatedMessageFromJson(
Serializer.moveToExtraDataFromRoot(json, topLevelFields),
);
/// A Map of
final Map<String, String>? i18n;
/// Known top level fields.
/// Useful for [Serializer] methods.
static final topLevelFields = [
'i18n',
...Message.topLevelFields,
];
/// Serialize to json
@override
Map<String, dynamic> toJson() => Serializer.moveFromExtraDataToRoot(
_$TranslatedMessageToJson(this),
);
}
@@ -67,6 +67,9 @@ Message _$MessageFromJson(Map<String, dynamic> json) {
deletedAt: json['deleted_at'] == null
? null
: DateTime.parse(json['deleted_at'] as String),
i18n: (json['i18n'] as Map<String, dynamic>?)?.map(
(k, e) => MapEntry(k, e as String),
),
);
}
@@ -107,18 +110,6 @@ Map<String, dynamic> _$MessageToJson(Message instance) {
val['pinned_by'] = readonly(instance.pinnedBy);
val['extra_data'] = instance.extraData;
writeNotNull('deleted_at', readonly(instance.deletedAt));
val['i18n'] = instance.i18n;
return val;
}
TranslatedMessage _$TranslatedMessageFromJson(Map<String, dynamic> json) {
return TranslatedMessage(
(json['i18n'] as Map<String, dynamic>?)?.map(
(k, e) => MapEntry(k, e as String),
),
);
}
Map<String, dynamic> _$TranslatedMessageToJson(TranslatedMessage instance) =>
<String, dynamic>{
'i18n': instance.i18n,
};
@@ -36,5 +36,8 @@ OwnUser _$OwnUserFromJson(Map<String, dynamic> json) {
online: json['online'] as bool? ?? false,
extraData: json['extra_data'] as Map<String, dynamic>? ?? {},
banned: json['banned'] as bool? ?? false,
teams:
(json['teams'] as List<dynamic>?)?.map((e) => e as String).toList() ??
[],
);
}
@@ -1610,9 +1610,12 @@ void main() {
const messageId = 'test-message-id';
const language = 'hi'; // Hindi
const translatedMessageText = 'नमस्ते';
final translatedMessage = TranslatedMessage(const {
language: translatedMessageText,
});
final translatedMessage = Message(
i18n: const {
language: translatedMessageText,
},
);
when(() => client.translateMessage(messageId, language)).thenAnswer(
(_) async => TranslateMessageResponse()..message = translatedMessage,
@@ -2109,9 +2109,11 @@ void main() {
const messageId = 'test-message-id';
const language = 'hi'; // Hindi
const translatedMessageText = 'नमस्ते';
final translatedMessage = TranslatedMessage(const {
language: translatedMessageText,
});
final translatedMessage = Message(
i18n: const {
language: translatedMessageText,
},
);
when(() => api.message.translateMessage(messageId, language)).thenAnswer(
(_) async => TranslateMessageResponse()..message = translatedMessage,
@@ -371,9 +371,11 @@ void main() {
final path = '/messages/${message.id}/translate';
const translatedMessageText = 'नमस्ते';
final translatedMessage = TranslatedMessage(const {
language: translatedMessageText,
});
final translatedMessage = Message(
i18n: const {
language: translatedMessageText,
},
);
when(() => client.post(
path,