TF-322 Sort default mailbox in TreeBuilder
This commit is contained in:
committed by
Dat H. Pham
parent
c2dc3b43fb
commit
71fc8a595e
@@ -4,7 +4,6 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/extensions/mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_change_response.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
@@ -40,7 +39,6 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
||||
Future<List<Mailbox>> getAllMailboxCache() {
|
||||
return Future.sync(() async {
|
||||
final listMailboxes = await _mailboxCacheManager.getAllMailbox();
|
||||
listMailboxes.sort((mailboxA, mailboxB) => mailboxA.compareTo(mailboxB));
|
||||
return listMailboxes;
|
||||
}).catchError((error) {
|
||||
throw error;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_cache.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/extensions/mailbox_rights_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_cache.dart';
|
||||
|
||||
extension MailboxExtension on Mailbox {
|
||||
|
||||
@@ -19,8 +19,4 @@ extension MailboxExtension on Mailbox {
|
||||
isSubscribed: isSubscribed?.value
|
||||
);
|
||||
}
|
||||
|
||||
int compareTo(Mailbox other) {
|
||||
return this.sortOrder!.value.value.compareTo(other.sortOrder!.value.value);
|
||||
}
|
||||
}
|
||||
@@ -135,4 +135,16 @@ extension MailboxNodeExtension on MailboxNode {
|
||||
selectMode: selectMode,
|
||||
);
|
||||
}
|
||||
|
||||
int compareTo(MailboxNode other) {
|
||||
if (item.sortOrder == null) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (other.item.sortOrder == null) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return item.sortOrder!.value.value.compareTo(other.item.sortOrder!.value.value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,7 @@ class TreeBuilder {
|
||||
}
|
||||
});
|
||||
|
||||
defaultTree.root.childrenItems?.sort((thisMailbox, thatMailbox) => thisMailbox.compareTo(thatMailbox));
|
||||
return Tuple2(defaultTree, folderTree);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.dart';
|
||||
@@ -8,7 +7,6 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_inte
|
||||
class CredentialBindings extends Bindings {
|
||||
|
||||
void dependencies() {
|
||||
log('CredentialBindings::dependencies(): dmm credential goi vao day di');
|
||||
bindingsRepositoryImpl();
|
||||
bindingsRepository();
|
||||
bindingsInteractor();
|
||||
@@ -19,7 +17,6 @@ class CredentialBindings extends Bindings {
|
||||
}
|
||||
|
||||
void bindingsRepository() {
|
||||
log('CredentialBindings::bindingsRepository(): dmm Put CredentialRepo ');
|
||||
Get.put<CredentialRepository>(Get.find<CredentialRepositoryImpl>());
|
||||
}
|
||||
|
||||
|
||||
@@ -209,4 +209,51 @@ void main() {
|
||||
contains(MailboxNode(PresentationMailbox(MailboxId(Id("e3_2_1")), parentId: MailboxId(Id('id42'))))));
|
||||
});
|
||||
});
|
||||
|
||||
group('generate default mailbox tree base on sortOrder: ', () {
|
||||
final expectedTree = MailboxTree(
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id('root'))),
|
||||
childrenItems: [
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("1")), parentId: null, name: MailboxName('Inbox'), sortOrder: SortOrder(sortValue: 10), role: Role('inbox')),
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("2")), parentId: null, name: MailboxName('Draft'), sortOrder: SortOrder(sortValue: 30), role: Role('draft')),
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("3")), parentId: null, name: MailboxName('Outbox'), sortOrder: SortOrder(sortValue: 40), role: Role('outbox')),
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("4")), parentId: null, name: MailboxName('Sent'), sortOrder: SortOrder(sortValue: 50), role: Role('sent')),
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("5")), parentId: null, name: MailboxName('Trash'), sortOrder: SortOrder(sortValue: 60), role: Role('trash')),
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("6")), parentId: null, name: MailboxName('Spam'), sortOrder: SortOrder(sortValue: 70), role: Role('spam')),
|
||||
),
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
test('defaultMailboxTree should be in order after buildTree', () async {
|
||||
final testCase = [
|
||||
PresentationMailbox(MailboxId(Id("4")), parentId: null, name: MailboxName('Sent'), sortOrder: SortOrder(sortValue: 50), role: Role('sent')),
|
||||
PresentationMailbox(MailboxId(Id("6")), parentId: null, name: MailboxName('Spam'), sortOrder: SortOrder(sortValue: 70), role: Role('spam')),
|
||||
PresentationMailbox(MailboxId(Id("5")), parentId: null, name: MailboxName('Trash'), sortOrder: SortOrder(sortValue: 60), role: Role('trash')),
|
||||
PresentationMailbox(MailboxId(Id("2")), parentId: null, name: MailboxName('Draft'), sortOrder: SortOrder(sortValue: 30), role: Role('draft')),
|
||||
PresentationMailbox(MailboxId(Id("3")), parentId: null, name: MailboxName('Outbox'), sortOrder: SortOrder(sortValue: 40), role: Role('outbox')),
|
||||
PresentationMailbox(MailboxId(Id("1")), parentId: null, name: MailboxName('Inbox'), sortOrder: SortOrder(sortValue: 10), role: Role('inbox')),
|
||||
];
|
||||
|
||||
final generatedTree = await TreeBuilder().generateMailboxTreeInUI(testCase);
|
||||
|
||||
expect(
|
||||
generatedTree.head.root.childrenItems,
|
||||
equals(expectedTree.root.childrenItems)
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user