diff --git a/contact/lib/contact/model/contact.dart b/contact/lib/contact/model/contact.dart new file mode 100644 index 000000000..240a32fb7 --- /dev/null +++ b/contact/lib/contact/model/contact.dart @@ -0,0 +1,7 @@ + +import 'package:equatable/equatable.dart'; + +abstract class Contact with EquatableMixin { + @override + List get props => []; +} \ No newline at end of file diff --git a/contact/lib/contact/model/contact_filter.dart b/contact/lib/contact/model/contact_filter.dart new file mode 100644 index 000000000..d6b41ff29 --- /dev/null +++ b/contact/lib/contact/model/contact_filter.dart @@ -0,0 +1,21 @@ +import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'contact_filter.g.dart'; + +@JsonSerializable() +class ContactFilter extends Filter { + + final String text; + + ContactFilter(this.text); + + factory ContactFilter.fromJson(Map json) => + _$ContactFilterFromJson(json); + + @override + Map toJson() => _$ContactFilterToJson(this); + + @override + List get props => [text]; +} \ No newline at end of file diff --git a/contact/lib/contact/model/tmail_contact.dart b/contact/lib/contact/model/tmail_contact.dart new file mode 100644 index 000000000..697a15241 --- /dev/null +++ b/contact/lib/contact/model/tmail_contact.dart @@ -0,0 +1,36 @@ + +import 'package:contact/contact/model/contact.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'tmail_contact.g.dart'; + +@JsonSerializable() +class TMailContact extends Contact { + + final String id; + final String emailAddress; + + @JsonKey(includeIfNull: false) + final String? firstname; + + @JsonKey(includeIfNull: false) + final String? surname; + + TMailContact( + this.id, + this.firstname, + this.surname, + this.emailAddress); + + factory TMailContact.fromJson(Map json) => + _$TMailContactFromJson(json); + + Map toJson() => _$TMailContactToJson(this); + + @override + List get props => [ + id, + firstname, + surname, + emailAddress]; +} \ No newline at end of file