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:
@@ -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,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user