import 'package:solian/models/account.dart'; import 'package:solian/models/channel.dart'; class Event { int id; String uuid; DateTime createdAt; DateTime updatedAt; DateTime? deletedAt; Map body; String type; Channel? channel; Sender sender; int channelId; int senderId; bool isPending = false; Event({ required this.id, required this.uuid, required this.createdAt, required this.updatedAt, this.deletedAt, required this.body, required this.type, this.channel, required this.sender, required this.channelId, required this.senderId, }); factory Event.fromJson(Map json) => Event( id: json['id'], uuid: json['uuid'], createdAt: DateTime.parse(json['created_at']), updatedAt: DateTime.parse(json['updated_at']), deletedAt: json['deleted_at'], body: json['body'], type: json['type'], channel: json['channel'] != null ? Channel.fromJson(json['channel']) : null, sender: Sender.fromJson(json['sender']), channelId: json['channel_id'], senderId: json['sender_id'], ); Map toJson() => { 'id': id, 'uuid': uuid, 'created_at': createdAt.toIso8601String(), 'updated_at': updatedAt.toIso8601String(), 'deleted_at': deletedAt, 'body': body, 'type': type, 'channel': channel?.toJson(), 'sender': sender.toJson(), 'channel_id': channelId, 'sender_id': senderId, }; } class EventMessageBody { String text; String algorithm; List? attachments; int? quoteEvent; int? relatedEvent; List? relatedUsers; EventMessageBody({ required this.text, required this.algorithm, required this.attachments, required this.quoteEvent, required this.relatedEvent, required this.relatedUsers, }); factory EventMessageBody.fromJson(Map json) => EventMessageBody( text: json['text'] ?? '', algorithm: json['algorithm'] ?? 'plain', attachments: json['attachments'] != null ? List.from(json['attachments']?.whereType()) : null, quoteEvent: json['quote_event'], relatedEvent: json['related_event'], relatedUsers: json['related_users'] != null ? List.from(json['related_users'].map((x) => x)) : null, ); Map toJson() => { 'text': text, 'algorithm': algorithm, 'attachments': attachments?.cast(), 'quote_event': quoteEvent, 'related_event': relatedEvent, 'related_users': relatedUsers?.cast(), }; } 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, }; }