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:
@@ -75,7 +75,7 @@ class QueryChannelsResponse extends _BaseResponse {
|
|||||||
@JsonSerializable(createToJson: false)
|
@JsonSerializable(createToJson: false)
|
||||||
class TranslateMessageResponse extends _BaseResponse {
|
class TranslateMessageResponse extends _BaseResponse {
|
||||||
/// Translated message
|
/// Translated message
|
||||||
late TranslatedMessage message;
|
late Message message;
|
||||||
|
|
||||||
/// Create a new instance from a json
|
/// Create a new instance from a json
|
||||||
static TranslateMessageResponse fromJson(Map<String, dynamic> json) =>
|
static TranslateMessageResponse fromJson(Map<String, dynamic> json) =>
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ TranslateMessageResponse _$TranslateMessageResponseFromJson(
|
|||||||
Map<String, dynamic> json) {
|
Map<String, dynamic> json) {
|
||||||
return TranslateMessageResponse()
|
return TranslateMessageResponse()
|
||||||
..duration = json['duration'] as String?
|
..duration = json['duration'] as String?
|
||||||
..message =
|
..message = Message.fromJson(json['message'] as Map<String, dynamic>);
|
||||||
TranslatedMessage.fromJson(json['message'] as Map<String, dynamic>);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryMembersResponse _$QueryMembersResponseFromJson(Map<String, dynamic> json) {
|
QueryMembersResponse _$QueryMembersResponseFromJson(Map<String, dynamic> json) {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import 'package:equatable/equatable.dart';
|
|||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
import 'package:stream_chat/src/core/models/attachment.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/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/models/user.dart';
|
||||||
|
import 'package:stream_chat/src/core/util/serializer.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
part 'message.g.dart';
|
part 'message.g.dart';
|
||||||
@@ -73,6 +73,7 @@ class Message extends Equatable {
|
|||||||
this.extraData = const {},
|
this.extraData = const {},
|
||||||
this.deletedAt,
|
this.deletedAt,
|
||||||
this.status = MessageSendingStatus.sent,
|
this.status = MessageSendingStatus.sent,
|
||||||
|
this.i18n,
|
||||||
}) : id = id ?? const Uuid().v4(),
|
}) : id = id ?? const Uuid().v4(),
|
||||||
pinExpires = pinExpires?.toUtc(),
|
pinExpires = pinExpires?.toUtc(),
|
||||||
createdAt = createdAt ?? DateTime.now(),
|
createdAt = createdAt ?? DateTime.now(),
|
||||||
@@ -218,6 +219,9 @@ class Message extends Equatable {
|
|||||||
@JsonKey(includeIfNull: false, toJson: Serializer.readOnly)
|
@JsonKey(includeIfNull: false, toJson: Serializer.readOnly)
|
||||||
final DateTime? deletedAt;
|
final DateTime? deletedAt;
|
||||||
|
|
||||||
|
/// A Map of
|
||||||
|
final Map<String, String>? i18n;
|
||||||
|
|
||||||
/// Known top level fields.
|
/// Known top level fields.
|
||||||
/// Useful for [Serializer] methods.
|
/// Useful for [Serializer] methods.
|
||||||
static const topLevelFields = [
|
static const topLevelFields = [
|
||||||
@@ -248,6 +252,7 @@ class Message extends Equatable {
|
|||||||
'pinned_at',
|
'pinned_at',
|
||||||
'pin_expires',
|
'pin_expires',
|
||||||
'pinned_by',
|
'pinned_by',
|
||||||
|
'i18n',
|
||||||
];
|
];
|
||||||
|
|
||||||
/// Serialize to json
|
/// Serialize to json
|
||||||
@@ -285,6 +290,7 @@ class Message extends Equatable {
|
|||||||
User? pinnedBy,
|
User? pinnedBy,
|
||||||
Map<String, Object?>? extraData,
|
Map<String, Object?>? extraData,
|
||||||
MessageSendingStatus? status,
|
MessageSendingStatus? status,
|
||||||
|
Map<String, String>? i18n,
|
||||||
}) {
|
}) {
|
||||||
assert(() {
|
assert(() {
|
||||||
if (pinExpires is! DateTime &&
|
if (pinExpires is! DateTime &&
|
||||||
@@ -324,6 +330,7 @@ class Message extends Equatable {
|
|||||||
pinnedBy: pinnedBy ?? this.pinnedBy,
|
pinnedBy: pinnedBy ?? this.pinnedBy,
|
||||||
pinExpires:
|
pinExpires:
|
||||||
pinExpires == _pinExpires ? this.pinExpires : pinExpires as DateTime?,
|
pinExpires == _pinExpires ? this.pinExpires : pinExpires as DateTime?,
|
||||||
|
i18n: i18n ?? this.i18n,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,6 +365,7 @@ class Message extends Equatable {
|
|||||||
pinnedAt: other.pinnedAt,
|
pinnedAt: other.pinnedAt,
|
||||||
pinExpires: other.pinExpires,
|
pinExpires: other.pinExpires,
|
||||||
pinnedBy: other.pinnedBy,
|
pinnedBy: other.pinnedBy,
|
||||||
|
i18n: other.i18n,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -390,35 +398,6 @@ class Message extends Equatable {
|
|||||||
pinnedBy,
|
pinnedBy,
|
||||||
extraData,
|
extraData,
|
||||||
status,
|
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
|
deletedAt: json['deleted_at'] == null
|
||||||
? null
|
? null
|
||||||
: DateTime.parse(json['deleted_at'] as String),
|
: 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['pinned_by'] = readonly(instance.pinnedBy);
|
||||||
val['extra_data'] = instance.extraData;
|
val['extra_data'] = instance.extraData;
|
||||||
writeNotNull('deleted_at', readonly(instance.deletedAt));
|
writeNotNull('deleted_at', readonly(instance.deletedAt));
|
||||||
|
val['i18n'] = instance.i18n;
|
||||||
return val;
|
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,
|
online: json['online'] as bool? ?? false,
|
||||||
extraData: json['extra_data'] as Map<String, dynamic>? ?? {},
|
extraData: json['extra_data'] as Map<String, dynamic>? ?? {},
|
||||||
banned: json['banned'] as bool? ?? false,
|
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 messageId = 'test-message-id';
|
||||||
const language = 'hi'; // Hindi
|
const language = 'hi'; // Hindi
|
||||||
const translatedMessageText = 'नमस्ते';
|
const translatedMessageText = 'नमस्ते';
|
||||||
final translatedMessage = TranslatedMessage(const {
|
|
||||||
language: translatedMessageText,
|
final translatedMessage = Message(
|
||||||
});
|
i18n: const {
|
||||||
|
language: translatedMessageText,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
when(() => client.translateMessage(messageId, language)).thenAnswer(
|
when(() => client.translateMessage(messageId, language)).thenAnswer(
|
||||||
(_) async => TranslateMessageResponse()..message = translatedMessage,
|
(_) async => TranslateMessageResponse()..message = translatedMessage,
|
||||||
|
|||||||
@@ -2109,9 +2109,11 @@ void main() {
|
|||||||
const messageId = 'test-message-id';
|
const messageId = 'test-message-id';
|
||||||
const language = 'hi'; // Hindi
|
const language = 'hi'; // Hindi
|
||||||
const translatedMessageText = 'नमस्ते';
|
const translatedMessageText = 'नमस्ते';
|
||||||
final translatedMessage = TranslatedMessage(const {
|
final translatedMessage = Message(
|
||||||
language: translatedMessageText,
|
i18n: const {
|
||||||
});
|
language: translatedMessageText,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
when(() => api.message.translateMessage(messageId, language)).thenAnswer(
|
when(() => api.message.translateMessage(messageId, language)).thenAnswer(
|
||||||
(_) async => TranslateMessageResponse()..message = translatedMessage,
|
(_) async => TranslateMessageResponse()..message = translatedMessage,
|
||||||
|
|||||||
@@ -371,9 +371,11 @@ void main() {
|
|||||||
final path = '/messages/${message.id}/translate';
|
final path = '/messages/${message.id}/translate';
|
||||||
|
|
||||||
const translatedMessageText = 'नमस्ते';
|
const translatedMessageText = 'नमस्ते';
|
||||||
final translatedMessage = TranslatedMessage(const {
|
final translatedMessage = Message(
|
||||||
language: translatedMessageText,
|
i18n: const {
|
||||||
});
|
language: translatedMessageText,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
when(() => client.post(
|
when(() => client.post(
|
||||||
path,
|
path,
|
||||||
|
|||||||
Reference in New Issue
Block a user