TF-1705 Auto create default folder no role if missing on server CYRUS

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 918a554f1fbc5816d48dd00bf01be8624b9dcc9b)
This commit is contained in:
dab246
2023-11-02 15:58:51 +07:00
committed by Dat Vu
parent 39e53f0769
commit 17da789fe3
15 changed files with 30 additions and 51 deletions
@@ -181,8 +181,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
_handleUnsubscribeMultipleMailboxHasSomeSuccess(success);
} else if (success is CreateDefaultMailboxAllSuccess) {
_refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
} else if (success is CreateDefaultMailboxHasSomeFailure) {
_refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
}
}
@@ -196,7 +194,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
} else if (failure is RefreshChangesAllMailboxFailure) {
_clearNewFolderId();
} else if (failure is CreateDefaultMailboxFailure) {
_refreshMailboxChanges();
refreshAllMailbox();
}
}
@@ -364,8 +362,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
try {
final outboxMailboxIdByRole = mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleOutbox];
if (outboxMailboxIdByRole == null) {
final outboxMailboxByName = allMailboxes
.firstWhere((mailbox) => mailbox.name?.toLowerCase() == PresentationMailbox.lowerCaseOutboxMailboxName);
final outboxMailboxByName = findNodeByNameOnFirstLevel(PresentationMailbox.outboxRole)?.item;
mailboxDashBoardController.setOutboxMailbox(outboxMailboxByName);
} else {
mailboxDashBoardController.setOutboxMailbox(mailboxDashBoardController.mapMailboxById[outboxMailboxIdByRole]!);
@@ -416,8 +413,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
void _handleCreateDefaultFolderIfMissing(Map<Role, MailboxId> mapDefaultMailboxRole) {
final listRoleMissing = MailboxConstants.defaultMailboxRoles
.whereNot(mapDefaultMailboxRole.containsKey)
.toSet()
.whereNot((role) => mapDefaultMailboxRole.containsKey(role) || findNodeByNameOnFirstLevel(role.value) != null)
.toList();
log('MailboxController::_handleCreateDefaultFolderIfMissing():listRoleMissing: $listRoleMissing');
final accountId = mailboxDashBoardController.accountId.value;
@@ -1,6 +1,7 @@
import 'dart:collection';
import 'package:collection/collection.dart';
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/mailbox/expand_mode.dart';
@@ -141,6 +142,8 @@ class MailboxTree with EquatableMixin {
}
}
MailboxNode? findNodeOnFirstLevel(NodeQuery nodeQuery) => root.childrenItems?.firstWhereOrNull(nodeQuery);
@override
List<Object?> get props => [root];
}
@@ -5,8 +5,11 @@ import 'package:model/mailbox/presentation_mailbox.dart';
class MailboxConstants {
static final List<Role> defaultMailboxRoles = [
PresentationMailbox.roleInbox,
PresentationMailbox.roleOutbox,
PresentationMailbox.roleDrafts,
PresentationMailbox.roleSent,
PresentationMailbox.roleTrash
PresentationMailbox.roleTrash,
PresentationMailbox.roleSpam,
PresentationMailbox.roleTemplates,
];
}