TF-1310: [Presentation] Refactor buildTree logic in TreeBuilder + BaseMailboxController

This commit is contained in:
HuyNguyen
2023-02-02 22:19:43 +07:00
committed by Dat Vu
parent d57bcd10dd
commit 10ba3867d8
30 changed files with 523 additions and 237 deletions
@@ -110,6 +110,7 @@ class DestinationPickerController extends BaseMailboxController {
mailboxAction.value = arguments!.mailboxAction;
mailboxIdSelected = arguments!.mailboxIdSelected;
accountId = arguments!.accountId;
_session = arguments!.session;
getAllMailboxAction();
}
}
@@ -175,9 +176,9 @@ class DestinationPickerController extends BaseMailboxController {
mailboxCategoriesExpandMode.value.defaultMailbox = newExpandMode;
mailboxCategoriesExpandMode.refresh();
break;
case MailboxCategories.folders:
final newExpandMode = mailboxCategoriesExpandMode.value.folderMailbox == ExpandMode.EXPAND ? ExpandMode.COLLAPSE : ExpandMode.EXPAND;
mailboxCategoriesExpandMode.value.folderMailbox = newExpandMode;
case MailboxCategories.personalMailboxes:
final newExpandMode = mailboxCategoriesExpandMode.value.personalMailboxes == ExpandMode.EXPAND ? ExpandMode.COLLAPSE : ExpandMode.EXPAND;
mailboxCategoriesExpandMode.value.personalMailboxes = newExpandMode;
mailboxCategoriesExpandMode.refresh();
break;
default:
@@ -235,7 +236,7 @@ class DestinationPickerController extends BaseMailboxController {
if (mailboxDestination.value == null ||
mailboxDestination.value == PresentationMailbox.unifiedMailbox) {
final allChildrenAtMailboxLocation = (defaultMailboxTree.value.root.childrenItems ?? <MailboxNode>[]) +
(folderMailboxTree.value.root.childrenItems ?? <MailboxNode>[]);
(personalMailboxTree.value.root.childrenItems ?? <MailboxNode>[]);
if (allChildrenAtMailboxLocation.isNotEmpty) {
listMailboxNameAsStringExist = allChildrenAtMailboxLocation
.where((mailboxNode) => mailboxNode.nameNotEmpty)
@@ -224,11 +224,11 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
actions,
mailboxIdSelected)
: const SizedBox.shrink()),
Obx(() => controller.folderMailboxHasChild
Obx(() => controller.personalMailboxHasChild
? _buildMailboxCategory(
context,
MailboxCategories.folders,
controller.folderRootNode,
MailboxCategories.personalMailboxes,
controller.personalRootNode,
actions,
mailboxIdSelected)
: const SizedBox.shrink()),
@@ -1,6 +1,7 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
@@ -8,9 +9,18 @@ class DestinationPickerArguments with EquatableMixin {
final AccountId accountId;
final MailboxActions mailboxAction;
final MailboxId? mailboxIdSelected;
final Session? session;
DestinationPickerArguments(this.accountId, this.mailboxAction, {this.mailboxIdSelected});
DestinationPickerArguments(
this.accountId,
this.mailboxAction,
this.session,
{this.mailboxIdSelected});
@override
List<Object?> get props => [accountId, mailboxAction, mailboxIdSelected];
List<Object?> get props => [
accountId,
mailboxAction,
mailboxIdSelected,
session];
}