import 'package:solian/models/account.dart'; import 'package:solian/models/channel.dart'; import 'package:solian/models/post.dart'; class Message { int id; DateTime createdAt; DateTime updatedAt; DateTime? deletedAt; String content; dynamic metadata; int type; List? attachments; Channel? channel; Sender sender; int? replyId; Message? replyTo; int channelId; int senderId; Message({ required this.id, required this.createdAt, required this.updatedAt, this.deletedAt, required this.content, required this.metadata, required this.type, this.attachments, this.channel, required this.sender, required this.replyId, required this.replyTo, required this.channelId, required this.senderId, }); factory Message.fromJson(Map json) => Message( id: json['id'], createdAt: DateTime.parse(json['created_at']), updatedAt: DateTime.parse(json['updated_at']), deletedAt: json['deleted_at'], content: json['content'], metadata: json['metadata'], type: json['type'], attachments: List.from( json['attachments']?.map((x) => Attachment.fromJson(x)) ?? List.empty()), channel: Channel.fromJson(json['channel']), sender: Sender.fromJson(json['sender']), replyId: json['reply_id'], replyTo: json['reply_to'] != null ? Message.fromJson(json['reply_to']) : null, channelId: json['channel_id'], senderId: json['sender_id'], ); Map toJson() => { 'id': id, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), 'deleted_at': deletedAt, 'content': content, 'metadata': metadata, 'type': type, 'attachments': List.from( attachments?.map((x) => x.toJson()) ?? List.empty()), 'channel': channel?.toJson(), 'sender': sender.toJson(), 'reply_id': replyId, 'reply_to': replyTo?.toJson(), 'channel_id': channelId, 'sender_id': senderId, }; } class Sender { int id; DateTime createdAt; DateTime updatedAt; DateTime? deletedAt; Account account; int channelId; int accountId; int notify; Sender({ required this.id, required this.createdAt, required this.updatedAt, this.deletedAt, required this.account, required this.channelId, required this.accountId, required this.notify, }); factory Sender.fromJson(Map json) => Sender( id: json['id'], createdAt: DateTime.parse(json['created_at']), updatedAt: DateTime.parse(json['updated_at']), deletedAt: json['deleted_at'], account: Account.fromJson(json['account']), channelId: json['channel_id'], accountId: json['account_id'], notify: json['notify'], ); Map toJson() => { 'id': id, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), 'deleted_at': deletedAt, 'account': account.toJson(), 'channel_id': channelId, 'account_id': accountId, 'notify': notify, }; }