Add object for model and core module
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_body_value.dart';
|
||||
|
||||
class EmailContent with EquatableMixin {
|
||||
|
||||
final EmailId id;
|
||||
final Set<EmailBodyPart>? htmlBody;
|
||||
final Set<EmailBodyPart>? attachments;
|
||||
final Map<PartId, EmailBodyValue>? bodyValues;
|
||||
|
||||
EmailContent(
|
||||
this.id,
|
||||
{
|
||||
this.htmlBody,
|
||||
this.attachments,
|
||||
this.bodyValues
|
||||
}
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
id,
|
||||
htmlBody,
|
||||
attachments,
|
||||
bodyValues
|
||||
];
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
@@ -12,8 +10,6 @@ import 'package:model/extensions/email_address_extension.dart';
|
||||
|
||||
class PresentationEmail with EquatableMixin {
|
||||
|
||||
static PresentationEmail presentationEmailEmpty = PresentationEmail(EmailId(Id('empty')));
|
||||
|
||||
final EmailId id;
|
||||
final Map<KeyWordIdentifier, bool>? keywords;
|
||||
final UnsignedInt? size;
|
||||
@@ -55,17 +51,20 @@ class PresentationEmail with EquatableMixin {
|
||||
return '';
|
||||
}
|
||||
|
||||
String getAvatarText() {
|
||||
if (getSenderName().isNotEmpty) {
|
||||
return getSenderName().substring(0, 1).toUpperCase();
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
String getEmailTitle() => subject != null ? subject! : '';
|
||||
|
||||
String getPartialContent() => preview != null ? preview! : '';
|
||||
|
||||
String getTimeForToday() => receivedAt != null ? DateFormat('h:mm a').format(receivedAt!.value) : '';
|
||||
bool isUnReadEmail() => !(keywords?.containsKey(KeyWordIdentifier.emailSeen) == true);
|
||||
|
||||
String getTimeForYesterday() => receivedAt != null ? DateFormat('EEE').format(receivedAt!.value) : '';
|
||||
|
||||
String getTimeThisYear() => receivedAt != null ? DateFormat('MMMd').format(receivedAt!.value) : '';
|
||||
|
||||
String getTimeOtherYear() => receivedAt != null ? DateFormat('yMMMd').format(receivedAt!.value) : '';
|
||||
bool isFlaggedEmail() => keywords?.containsKey(KeyWordIdentifier.emailFlagged) == true;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:model/extensions/email_address_extension.dart';
|
||||
|
||||
extension ListEmailAddressExtension on Set<EmailAddress>? {
|
||||
|
||||
List<String> getListEmailAddress({ExpandMode expandMode = ExpandMode.EXPAND, int limitAddress = 1}) {
|
||||
if (this != null) {
|
||||
if (expandMode == ExpandMode.EXPAND) {
|
||||
return this!.map((emailAddress) => emailAddress.asString()).toList();
|
||||
} else {
|
||||
final address = this!.map((emailAddress) => emailAddress.asString()).toList();
|
||||
return address.length > limitAddress ? address.sublist(0, limitAddress) : address;
|
||||
}
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
String listEmailAddressToString({ExpandMode expandMode = ExpandMode.EXPAND, int limitAddress = 1}) {
|
||||
return getListEmailAddress(expandMode: expandMode, limitAddress: limitAddress).join(', ');
|
||||
}
|
||||
|
||||
int numberEmailAddress() => this != null ? this!.length : 0;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:uri/uri.dart';
|
||||
|
||||
extension SessionExtension on Session {
|
||||
|
||||
String getDownloadUrl(String accountId, String blobId, String name, String type) {
|
||||
final downloadUriTemplate = UriTemplate('${downloadUrl.origin}');
|
||||
return downloadUriTemplate.expand({
|
||||
'accountId' : '$accountId',
|
||||
'blobId' : '$blobId',
|
||||
'name' : '$name',
|
||||
'type' : '$type',
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_rights.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
|
||||
class PresentationMailbox with EquatableMixin {
|
||||
|
||||
static PresentationMailbox presentationMailboxEmpty = PresentationMailbox(MailboxId(Id('empty')));
|
||||
static final roleTrash = Role('trash');
|
||||
static final roleSent = Role('sent');
|
||||
static final roleTemplates = Role('templates');
|
||||
|
||||
final MailboxId id;
|
||||
final MailboxName? name;
|
||||
@@ -43,17 +44,15 @@ class PresentationMailbox with EquatableMixin {
|
||||
bool hasRole() => role != null && role!.value.isNotEmpty;
|
||||
|
||||
String getCountUnReadEmails() {
|
||||
if (unreadEmails == null) {
|
||||
if (role == roleTrash || role == roleSent || role == roleTemplates) {
|
||||
return '';
|
||||
} else {
|
||||
if (unreadEmails!.value.value <= 0) {
|
||||
return '';
|
||||
} else {
|
||||
return unreadEmails!.value.value <= 999
|
||||
? '${unreadEmails!.value.value}'
|
||||
: '999+';
|
||||
}
|
||||
}
|
||||
|
||||
if (unreadEmails == null || unreadEmails!.value.value <= 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return unreadEmails!.value.value <= 999 ? '${unreadEmails!.value.value}' : '999+';
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -15,6 +15,9 @@ export 'mailbox/expand_mode.dart';
|
||||
|
||||
// Email
|
||||
export 'email/presentation_email.dart';
|
||||
export 'email/email_content.dart';
|
||||
|
||||
// Extensions
|
||||
export 'extensions/email_address_extension.dart';
|
||||
export 'extensions/email_address_extension.dart';
|
||||
export 'extensions/list_email_address_extension.dart';
|
||||
export 'extensions/session_extension.dart';
|
||||
@@ -43,6 +43,9 @@ dependencies:
|
||||
url: git://github.com/linagora/jmap-dart-client.git
|
||||
ref: master
|
||||
|
||||
# uri
|
||||
uri: 1.0.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
Reference in New Issue
Block a user