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/core/state.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.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/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/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/data/model/mailbox_change_response.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.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() {
|
Future<List<Mailbox>> getAllMailboxCache() {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
final listMailboxes = await _mailboxCacheManager.getAllMailbox();
|
final listMailboxes = await _mailboxCacheManager.getAllMailbox();
|
||||||
listMailboxes.sort((mailboxA, mailboxB) => mailboxA.compareTo(mailboxB));
|
|
||||||
return listMailboxes;
|
return listMailboxes;
|
||||||
}).catchError((error) {
|
}).catchError((error) {
|
||||||
throw error;
|
throw error;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
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/extensions/mailbox_rights_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_cache.dart';
|
||||||
|
|
||||||
extension MailboxExtension on Mailbox {
|
extension MailboxExtension on Mailbox {
|
||||||
|
|
||||||
@@ -19,8 +19,4 @@ extension MailboxExtension on Mailbox {
|
|||||||
isSubscribed: isSubscribed?.value
|
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,
|
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);
|
return Tuple2(defaultTree, folderTree);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
import 'package:core/core.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.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 {
|
class CredentialBindings extends Bindings {
|
||||||
|
|
||||||
void dependencies() {
|
void dependencies() {
|
||||||
log('CredentialBindings::dependencies(): dmm credential goi vao day di');
|
|
||||||
bindingsRepositoryImpl();
|
bindingsRepositoryImpl();
|
||||||
bindingsRepository();
|
bindingsRepository();
|
||||||
bindingsInteractor();
|
bindingsInteractor();
|
||||||
@@ -19,7 +17,6 @@ class CredentialBindings extends Bindings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void bindingsRepository() {
|
void bindingsRepository() {
|
||||||
log('CredentialBindings::bindingsRepository(): dmm Put CredentialRepo ');
|
|
||||||
Get.put<CredentialRepository>(Get.find<CredentialRepositoryImpl>());
|
Get.put<CredentialRepository>(Get.find<CredentialRepositoryImpl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -209,4 +209,51 @@ void main() {
|
|||||||
contains(MailboxNode(PresentationMailbox(MailboxId(Id("e3_2_1")), parentId: MailboxId(Id('id42'))))));
|
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