Skip to content

Commit 282632f

Browse files
committed
api [nfc]: Make Message.fromJson static
Message will become generic later, which does not support generic factory methods. We will add a comment explaining it then.
1 parent c5d0abf commit 282632f

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

lib/api/model/model.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ sealed class Message {
619619
required this.matchTopic,
620620
});
621621

622-
factory Message.fromJson(Map<String, dynamic> json) {
622+
static Message fromJson(Map<String, dynamic> json) {
623623
final type = json['type'] as String;
624624
if (type == 'stream') return StreamMessage.fromJson(json);
625625
if (type == 'private') return DmMessage.fromJson(json);

lib/api/route/messages.dart

+8
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ Future<GetMessageResult> getMessage(ApiConnection connection, {
6767
@JsonSerializable(fieldRename: FieldRename.snake)
6868
class GetMessageResult {
6969
// final String rawContent; // deprecated; ignore
70+
@JsonKey(fromJson: Message.fromJson)
7071
final Message message;
7172

7273
GetMessageResult({
@@ -138,6 +139,7 @@ class GetMessagesResult {
138139
final bool foundOldest;
139140
final bool foundAnchor;
140141
final bool historyLimited;
142+
@JsonKey(fromJson: _messagesFromJson)
141143
final List<Message> messages;
142144

143145
GetMessagesResult({
@@ -149,6 +151,12 @@ class GetMessagesResult {
149151
required this.messages,
150152
});
151153

154+
static List<Message> _messagesFromJson(Object json) {
155+
return (json as List<dynamic>)
156+
.map((e) => Message.fromJson(e as Map<String, dynamic>))
157+
.toList();
158+
}
159+
152160
factory GetMessagesResult.fromJson(Map<String, dynamic> json) =>
153161
_$GetMessagesResultFromJson(json);
154162

lib/api/route/messages.g.dart

+1-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)