Skip to content

Commit 9afe4d8

Browse files
authored
TF-4336 Fix INBOX should be above Favorite folder (#4340)
1 parent 9cd75b2 commit 9afe4d8

File tree

2 files changed

+371
-18
lines changed

2 files changed

+371
-18
lines changed

lib/features/mailbox/presentation/mailbox_controller.dart

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,10 @@ class MailboxController extends BaseMailboxController
253253
dashboardController: mailboxDashBoardController,
254254
toastManager: toastManager,
255255
);
256+
} else if (failure is CreateDefaultMailboxFailure) {
257+
autoCreateVirtualFolder(
258+
mailboxDashBoardController.isAINeedsActionEnabled,
259+
);
256260
} else {
257261
super.handleFailureViewState(failure);
258262
}
@@ -273,20 +277,13 @@ class MailboxController extends BaseMailboxController
273277
},
274278
(success) {
275279
if (success is GetAllMailboxSuccess) {
276-
autoCreateVirtualFolder(
277-
mailboxDashBoardController.isAINeedsActionEnabled,
278-
);
279280
mailboxDashBoardController.updateRefreshAllMailboxState(Right(RefreshAllMailboxSuccess()));
280281
_handleCreateDefaultFolderIfMissing(mailboxDashBoardController.mapDefaultMailboxIdByRole);
281282
_handleDataFromNavigationRouter();
282283
mailboxDashBoardController.getSpamReportBanner();
283284
if (PlatformInfo.isIOS) {
284285
_updateMailboxIdsBlockNotificationToKeychain(success.mailboxList);
285286
}
286-
} else if (success is CreateDefaultMailboxAllSuccess) {
287-
autoCreateVirtualFolder(
288-
mailboxDashBoardController.isAINeedsActionEnabled,
289-
);
290287
}
291288
});
292289
}
@@ -614,7 +611,7 @@ class MailboxController extends BaseMailboxController
614611
.mailboxList
615612
.listSubscribedMailboxesAndDefaultMailboxes;
616613

617-
await refreshTree(listMailboxDisplayed);
614+
await refreshTree(listMailboxDisplayed.withoutVirtualMailbox);
618615

619616
if (currentContext != null) {
620617
syncAllMailboxWithDisplayName(currentContext!);
@@ -705,22 +702,32 @@ class MailboxController extends BaseMailboxController
705702
.whereNot((role) => mapDefaultMailboxRole.containsKey(role) || findNodeByNameOnFirstLevel(role.value) != null)
706703
.toList();
707704

705+
if (listRoleMissing.isEmpty || accountId == null || session == null) {
706+
autoCreateVirtualFolder(
707+
mailboxDashBoardController.isAINeedsActionEnabled,
708+
);
709+
return;
710+
}
711+
708712
final mapRoles = {
709713
for (var role in listRoleMissing)
710714
Id(uuid.v1()) : role
711715
};
712716
log('MailboxController::_handleCreateDefaultFolderIfMissing():mapRoles: $mapRoles');
713-
if (mapRoles.isNotEmpty && accountId != null && session != null) {
714-
consumeState(_createDefaultMailboxInteractor.execute(
715-
session!,
716-
accountId!,
717-
mapRoles,
718-
));
719-
}
717+
consumeState(_createDefaultMailboxInteractor.execute(
718+
session!,
719+
accountId!,
720+
mapRoles,
721+
));
720722
}
721723

722724
Future<void> _handleCreateDefaultFolderIfMissingSuccess(CreateDefaultMailboxAllSuccess success) async {
723-
if (success.listMailbox.isEmpty) return;
725+
if (success.listMailbox.isEmpty) {
726+
autoCreateVirtualFolder(
727+
mailboxDashBoardController.isAINeedsActionEnabled,
728+
);
729+
return;
730+
}
724731

725732
Set<Role?> existingRoles = {};
726733
Set<MailboxName> existingNamesWithoutParent = {};
@@ -733,10 +740,13 @@ class MailboxController extends BaseMailboxController
733740
allMailboxes.add(mailbox.toPresentationMailbox());
734741
}
735742

736-
await buildTree(allMailboxes);
743+
await buildTree(allMailboxes.withoutVirtualMailbox);
737744
if (currentContext != null) {
738745
syncAllMailboxWithDisplayName(currentContext!);
739746
}
747+
autoCreateVirtualFolder(
748+
mailboxDashBoardController.isAINeedsActionEnabled,
749+
);
740750
_setMapMailbox();
741751
_setOutboxMailbox();
742752
}
@@ -1320,7 +1330,7 @@ class MailboxController extends BaseMailboxController
13201330
currentMailboxState = success.currentMailboxState;
13211331
log('MailboxController::_handleGetAllMailboxSuccess:currentMailboxState: $currentMailboxState');
13221332
final listMailboxDisplayed = success.mailboxList.listSubscribedMailboxesAndDefaultMailboxes;
1323-
await buildTree(listMailboxDisplayed);
1333+
await buildTree(listMailboxDisplayed.withoutVirtualMailbox);
13241334
if (currentContext != null) {
13251335
syncAllMailboxWithDisplayName(currentContext!);
13261336
}

0 commit comments

Comments
 (0)