TF-37 Sort mailbox in alphabet
This commit is contained in:
committed by
Dat H. Pham
parent
e63298bc29
commit
63702035c8
@@ -1,5 +1,10 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
|
||||
extension MailboxNameExtension on MailboxName {
|
||||
int compareToSort(MailboxName mailboxName) => name.compareTo(mailboxName.name);
|
||||
int compareAlphabetically(MailboxName? other) {
|
||||
if (other == null) {
|
||||
return 1;
|
||||
}
|
||||
return name.toLowerCase().compareTo(other.name.toLowerCase());
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,8 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/constants/mailbox_constants.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/constants/mailbox_constants.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
@@ -10,7 +9,6 @@ import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_button_new_folder_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_tile_builder.dart';
|
||||
@@ -154,10 +152,7 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
.addName(AppLocalizations.of(context).new_folder)
|
||||
.build()
|
||||
),
|
||||
Obx(() => controller.folderMailboxTree.value.root.childrenItems.isNotEmpty
|
||||
? _buildFolderMailbox(context, controller.folderMailboxTree.value)
|
||||
: SizedBox.shrink()
|
||||
),
|
||||
_buildFolderMailbox(context),
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -180,19 +175,22 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
.build()));
|
||||
}
|
||||
|
||||
Widget _buildFolderMailbox(BuildContext context, MailboxTree mailboxTree) {
|
||||
return Transform(
|
||||
transform: Matrix4.translationValues(responsiveUtils.isMobile(context) ? 0.0 : -15.0, 0.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(left: 4, right: 16),
|
||||
child: TreeView(
|
||||
startExpanded: false,
|
||||
key: Key('folder_mailbox_list'),
|
||||
children: _buildListChildTileWidget(context, mailboxTree.root.childrenItems)))
|
||||
Widget _buildFolderMailbox(BuildContext context) {
|
||||
return Obx(() => controller.folderMailboxTree.value.root.hasChildren()
|
||||
? Transform(
|
||||
transform: Matrix4.translationValues(responsiveUtils.isMobile(context) ? 0.0 : -15.0, 0.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(left: 4, right: 16),
|
||||
child: TreeView(
|
||||
startExpanded: false,
|
||||
key: Key('folder_mailbox_list'),
|
||||
children: _buildListChildTileWidget(context, controller.folderMailboxTree.value.root.childrenItems!)))
|
||||
)
|
||||
: SizedBox.shrink()
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> _buildListChildTileWidget(BuildContext context, BuiltList<MailboxNode> listMailboxNode) {
|
||||
List<Widget> _buildListChildTileWidget(BuildContext context, List<MailboxNode> listMailboxNode) {
|
||||
return listMailboxNode
|
||||
.map((mailboxNode) => mailboxNode.hasChildren()
|
||||
? Padding(
|
||||
@@ -206,7 +204,7 @@ class MailboxView extends GetWidget<MailboxController> {
|
||||
mailboxNode,
|
||||
controller.getSelectMode(mailboxNode.item, controller.mailboxDashBoardController.selectedMailbox.value))
|
||||
.build(context)),
|
||||
children: _buildListChildTileWidget(context, mailboxNode.childrenItems)))
|
||||
children: _buildListChildTileWidget(context, mailboxNode.childrenItems!)))
|
||||
: Padding(
|
||||
padding: EdgeInsets.only(left: 16),
|
||||
child: GestureDetector(
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import 'dart:collection';
|
||||
import 'package:collection/collection.dart';
|
||||
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/mailbox_name_extension.dart';
|
||||
|
||||
import 'mailbox_node.dart';
|
||||
import 'mailbox_tree.dart';
|
||||
@@ -21,8 +23,16 @@ class TreeBuilder {
|
||||
if (node != null) {
|
||||
if (parentNode != null) {
|
||||
parentNode.addChildNode(node);
|
||||
parentNode.childrenItems?.sortByCompare<MailboxName?>(
|
||||
(node) => node.item.name,
|
||||
(name, other) => name?.compareAlphabetically(other) ?? -1
|
||||
);
|
||||
} else {
|
||||
tree.root.addChildNode(node);
|
||||
tree.root.childrenItems?.sortByCompare<MailboxName?>(
|
||||
(node) => node.item.name,
|
||||
(name, other) => name?.compareAlphabetically(other) ?? -1
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -83,6 +83,8 @@ dependencies:
|
||||
# http_parser
|
||||
http_parser: 4.0.0
|
||||
|
||||
collection: 1.15.0
|
||||
|
||||
# file_size
|
||||
filesize: 2.0.1
|
||||
|
||||
|
||||
@@ -13,46 +13,46 @@ void main() {
|
||||
PresentationMailbox(MailboxId(Id('root'))),
|
||||
childrenItems: [
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("1")), parentId: null),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("1_1")), parentId: MailboxId(Id('1')))),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("1_2")), parentId: MailboxId(Id('1'))),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("1_2_1")), parentId: MailboxId(Id('1_2'))))
|
||||
]
|
||||
),
|
||||
]
|
||||
PresentationMailbox(MailboxId(Id("3")), parentId: null),
|
||||
childrenItems: [
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("3_2")), parentId: MailboxId(Id('3'))),
|
||||
childrenItems: [MailboxNode(PresentationMailbox(MailboxId(Id("3_2_1")), parentId: MailboxId(Id('3_2'))))]
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("3_1")), parentId: MailboxId(Id('3'))),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("3_1_1")), parentId: MailboxId(Id('3_1'))))
|
||||
]
|
||||
),
|
||||
]
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("2")), parentId: null),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("2_1")), parentId: MailboxId(Id('2'))),
|
||||
childrenItems: [
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("2_1_1")), parentId: MailboxId(Id('2_1'))),
|
||||
childrenItems: [MailboxNode(PresentationMailbox(MailboxId(Id("2_1_1_1")), parentId: MailboxId(Id('2_1_1'))))]
|
||||
),
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("2_1_2")), parentId: MailboxId(Id('2_1'))))
|
||||
]
|
||||
),
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("2_2")), parentId: MailboxId(Id('2'))))
|
||||
]
|
||||
PresentationMailbox(MailboxId(Id("1")), parentId: null),
|
||||
childrenItems: [
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("1_2")), parentId: MailboxId(Id('1'))),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("1_2_1")), parentId: MailboxId(Id('1_2'))))
|
||||
]
|
||||
),
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("1_1")), parentId: MailboxId(Id('1')))),
|
||||
]
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("3")), parentId: null),
|
||||
childrenItems: [
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("3_1")), parentId: MailboxId(Id('3'))),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("3_1_1")), parentId: MailboxId(Id('3_1'))))
|
||||
]
|
||||
),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("3_2")), parentId: MailboxId(Id('3'))),
|
||||
childrenItems: [MailboxNode(PresentationMailbox(MailboxId(Id("3_2_1")), parentId: MailboxId(Id('3_2'))))]
|
||||
)
|
||||
]
|
||||
PresentationMailbox(MailboxId(Id("2")), parentId: null),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("2_2")), parentId: MailboxId(Id('2')))),
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("2_1")), parentId: MailboxId(Id('2'))),
|
||||
childrenItems: [
|
||||
MailboxNode(PresentationMailbox(MailboxId(Id("2_1_2")), parentId: MailboxId(Id('2_1')))),
|
||||
MailboxNode(
|
||||
PresentationMailbox(MailboxId(Id("2_1_1")), parentId: MailboxId(Id('2_1'))),
|
||||
childrenItems: [MailboxNode(PresentationMailbox(MailboxId(Id("2_1_1_1")), parentId: MailboxId(Id('2_1_1'))))]
|
||||
),
|
||||
]
|
||||
),
|
||||
]
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user