Init mailbox feature add domain layer
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/mailbox_extension.dart';
|
||||
|
||||
extension ListMailboxExtensions on List<Mailbox> {
|
||||
Tuple2<List<PresentationMailbox>, List<PresentationMailbox>> splitMailboxList(bool test(Mailbox element)) {
|
||||
final validBuilder = ListBuilder<PresentationMailbox>();
|
||||
final invalidBuilder = ListBuilder<PresentationMailbox>();
|
||||
forEach((element) {
|
||||
if (test(element)) {
|
||||
validBuilder.add(element.toPresentationMailbox());
|
||||
} else {
|
||||
invalidBuilder.add(element.toPresentationMailbox());
|
||||
}
|
||||
});
|
||||
return Tuple2(
|
||||
validBuilder.build().toList(),
|
||||
invalidBuilder.build().toList());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
|
||||
extension MailboxExtension on Mailbox {
|
||||
|
||||
PresentationMailbox toPresentationMailbox({SelectMode selectMode = SelectMode.INACTIVE}) {
|
||||
return PresentationMailbox(
|
||||
id,
|
||||
name: name,
|
||||
parentId: parentId,
|
||||
role: role,
|
||||
sortOrder: sortOrder,
|
||||
totalEmails: totalEmails,
|
||||
unreadEmails: unreadEmails,
|
||||
totalThreads: totalThreads,
|
||||
unreadThreads: unreadThreads,
|
||||
myRights: myRights,
|
||||
isSubscribed: isSubscribed,
|
||||
selectMode: selectMode
|
||||
);
|
||||
}
|
||||
|
||||
bool hasRole() => role != null && role!.value.isNotEmpty;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
|
||||
extension MailboxNameExtension on MailboxName {
|
||||
int compareToSort(MailboxName mailboxName) => name.compareTo(mailboxName.name);
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:model/model.dart';
|
||||
|
||||
extension PresentationMailboxExtension on PresentationMailbox {
|
||||
|
||||
String getMailboxIcon(ImagePaths imagePaths) {
|
||||
if (hasRole()) {
|
||||
switch(role!.value) {
|
||||
case 'inbox':
|
||||
return imagePaths.icMailboxInbox;
|
||||
case 'drafts':
|
||||
return imagePaths.icMailboxDrafts;
|
||||
case 'outbox':
|
||||
return imagePaths.icMailboxInbox;
|
||||
case 'sent':
|
||||
return imagePaths.icMailboxSent;
|
||||
case 'trash':
|
||||
return imagePaths.icMailboxTrash;
|
||||
case 'spam':
|
||||
return imagePaths.icMailboxSpam;
|
||||
case 'templates':
|
||||
return imagePaths.icMailboxTemplate;
|
||||
case 'all_mail':
|
||||
return imagePaths.icMailboxAllMail;
|
||||
default:
|
||||
return imagePaths.icMailboxFolder;
|
||||
}
|
||||
} else {
|
||||
return imagePaths.icMailboxFolder;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user