hym_ui/lib/structs.dart
2024-10-20 03:18:02 -04:00

106 lines
2.6 KiB
Dart

//data structures
import 'api_service.dart';
class GetThreadResponse {
final int id;
final List<String> messages;
final String subject;
final DateTime date;
final String from_name;
final String from_address;
final List<MailAddress> to;
GetThreadResponse({
required this.id,
required this.messages,
required this.subject,
required this.date,
required this.from_name,
required this.from_address,
required this.to,
});
factory GetThreadResponse.fromJson(Map<String, dynamic> json) {
var toList = json['to'] as List<dynamic>;
return GetThreadResponse (
id: json['id'],
messages: List<String>.from(json['messages']),
subject: json['subject'],
date: DateTime.parse(json['date']),
from_name: json['from_name'],
from_address: json['from_address'],
to: toList.map((i)=> MailAddress.fromJson(i)).toList(),
);
}
}
class MailAddress {
final String? name;
final String address;
MailAddress({this.name, required this.address});
factory MailAddress.fromJson(Map<String, dynamic> json) {
return MailAddress(
name: json['name'],
address: json['address'],
);
}
@override
String toString() {
// TODO: implement toString
return '${name} <${address}>';
}
}
// //old data structure
// class SerializableMessage {
// final String name;
// final String from;
// final List<MailAddress> to;
// final List<MailAddress> cc;
// final String hash;
// final String subject;
// final String date;
// final int uid;
// final String list;
// final String id;
// final String in_reply_to;
// SerializableMessage({
// required this.name,
// required this.from,
// required this.to,
// required this.cc,
// required this.hash,
// required this.subject,
// required this.date,
// required this.uid,
// required this.list,
// required this.id,
// required this.in_reply_to,
// });
// factory SerializableMessage.fromJson(Map<String, dynamic> json) {
// var toList = json['to'] as List;
// var ccList = json['cc'] as List;
// return SerializableMessage(
// name: json['name'],
// from: json['from'],
// // to: json['name', 'address']
// to: toList.map((i) => MailAddress.fromJson(i)).toList(),
// cc: ccList.map((i) => MailAddress.fromJson(i)).toList(),
// // path: json['path'],
// hash: json['hash'],
// subject: json['subject'],
// date: json['date'],
// uid: json['uid'],
// list: json['list'],
// id: json['id'],
// in_reply_to: json['in_reply_to'],
// );
// }
// }