TF-4284 Fix refreshing causes "virtual mailboxes" to be hidden (#4290)
This commit is contained in:
@@ -257,8 +257,9 @@ class MailboxController extends BaseMailboxController
|
||||
toastManager: toastManager,
|
||||
);
|
||||
} else if (failure is CreateDefaultMailboxFailure) {
|
||||
autoCreateVirtualFolder(
|
||||
mailboxDashBoardController.isAINeedsActionEnabled,
|
||||
updateMailboxTree(
|
||||
mailboxCollection: updateMailboxCollection(currentMailboxCollection),
|
||||
isRefreshTrigger: false,
|
||||
);
|
||||
} else {
|
||||
super.handleFailureViewState(failure);
|
||||
@@ -271,8 +272,9 @@ class MailboxController extends BaseMailboxController
|
||||
viewState.value.fold(
|
||||
(failure) {
|
||||
if (failure is GetAllMailboxFailure) {
|
||||
autoCreateVirtualFolder(
|
||||
mailboxDashBoardController.isAINeedsActionEnabled,
|
||||
updateMailboxTree(
|
||||
mailboxCollection: updateMailboxCollection(currentMailboxCollection),
|
||||
isRefreshTrigger: false,
|
||||
);
|
||||
mailboxDashBoardController.updateRefreshAllMailboxState(Left(RefreshAllMailboxFailure()));
|
||||
showRetryToast(failure);
|
||||
@@ -303,38 +305,7 @@ class MailboxController extends BaseMailboxController
|
||||
_handleNavigationRouteParameters
|
||||
);
|
||||
|
||||
ever(mailboxDashBoardController.mailboxUIAction, (action) {
|
||||
if (action is SelectMailboxDefaultAction) {
|
||||
_switchBackToMailboxDefault();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is RefreshChangeMailboxAction) {
|
||||
_refreshMailboxChanges(newState: action.newState);
|
||||
} else if (action is OpenMailboxAction) {
|
||||
if (currentContext != null) {
|
||||
_handleOpenMailbox(currentContext!, action.presentationMailbox);
|
||||
if (action.presentationMailbox.role == PresentationMailbox.roleInbox) {
|
||||
_autoScrollToTopMailboxList();
|
||||
}
|
||||
}
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is SystemBackToInboxAction) {
|
||||
_disableAllSearchEmail();
|
||||
_switchBackToMailboxDefault();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is RefreshAllMailboxAction) {
|
||||
refreshAllMailbox();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is AutoCreateActionRequiredFolderMailboxAction) {
|
||||
addActionRequiredFolder();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is AutoRemoveActionRequiredFolderMailboxAction) {
|
||||
removeActionRequiredFolder();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
if (selectedMailbox?.isActionRequired == true) {
|
||||
_switchBackToMailboxDefault();
|
||||
}
|
||||
}
|
||||
});
|
||||
ever(mailboxDashBoardController.mailboxUIAction, _handleMailboxUIAction);
|
||||
|
||||
ever(mailboxDashBoardController.viewState, (viewState) {
|
||||
final reactionState = viewState.getOrElse(() => UIState.idle);
|
||||
@@ -452,6 +423,57 @@ class MailboxController extends BaseMailboxController
|
||||
});
|
||||
}
|
||||
|
||||
void _handleMailboxUIAction(MailboxUIAction? action) {
|
||||
if (action is SelectMailboxDefaultAction) {
|
||||
_switchBackToMailboxDefault();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is RefreshChangeMailboxAction) {
|
||||
_refreshMailboxChanges(newState: action.newState);
|
||||
} else if (action is OpenMailboxAction) {
|
||||
_onOpenMailboxAction(action);
|
||||
} else if (action is SystemBackToInboxAction) {
|
||||
_disableAllSearchEmail();
|
||||
_switchBackToMailboxDefault();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is RefreshAllMailboxAction) {
|
||||
refreshAllMailbox();
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is AutoCreateActionRequiredFolderMailboxAction) {
|
||||
updateMailboxTree(
|
||||
mailboxCollection: addActionRequiredFolder(
|
||||
mailboxCollection: currentMailboxCollection,
|
||||
),
|
||||
isRefreshTrigger: false,
|
||||
);
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
} else if (action is AutoRemoveActionRequiredFolderMailboxAction) {
|
||||
_onAutoRemoveActionRequiredFolderMailboxAction();
|
||||
}
|
||||
}
|
||||
|
||||
void _onOpenMailboxAction(OpenMailboxAction action) {
|
||||
if (currentContext != null) {
|
||||
_handleOpenMailbox(currentContext!, action.presentationMailbox);
|
||||
if (action.presentationMailbox.role == PresentationMailbox.roleInbox) {
|
||||
_autoScrollToTopMailboxList();
|
||||
}
|
||||
}
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
}
|
||||
|
||||
void _onAutoRemoveActionRequiredFolderMailboxAction() {
|
||||
updateMailboxTree(
|
||||
mailboxCollection: removeActionRequiredFolder(
|
||||
mailboxCollection: currentMailboxCollection,
|
||||
),
|
||||
isRefreshTrigger: false,
|
||||
);
|
||||
mailboxDashBoardController.clearMailboxUIAction();
|
||||
if (selectedMailbox?.isActionRequired == true) {
|
||||
_switchBackToMailboxDefault();
|
||||
}
|
||||
}
|
||||
|
||||
void _handleMarkEmailsAsReadOrUnread({
|
||||
required MailboxId? affectedMailboxId,
|
||||
int? readCount,
|
||||
@@ -614,14 +636,14 @@ class MailboxController extends BaseMailboxController
|
||||
.mailboxList
|
||||
.listSubscribedMailboxesAndDefaultMailboxes;
|
||||
|
||||
await refreshTree(listMailboxDisplayed.withoutVirtualMailbox);
|
||||
await refreshTree(
|
||||
listMailboxDisplayed.withoutVirtualMailbox,
|
||||
onUpdateMailboxCollectionCallback: updateMailboxCollection,
|
||||
);
|
||||
|
||||
if (currentContext != null) {
|
||||
syncAllMailboxWithDisplayName(currentContext!);
|
||||
}
|
||||
autoCreateVirtualFolder(
|
||||
mailboxDashBoardController.isAINeedsActionEnabled,
|
||||
);
|
||||
_setMapMailbox();
|
||||
_setOutboxMailbox();
|
||||
_selectSelectedMailboxDefault();
|
||||
@@ -632,6 +654,10 @@ class MailboxController extends BaseMailboxController
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
bool get isAINeedsActionEnabled =>
|
||||
mailboxDashBoardController.isAINeedsActionEnabled;
|
||||
|
||||
void _setMapMailbox() {
|
||||
final mapDefaultMailboxIdByRole = {
|
||||
for (var mailboxNode in defaultMailboxTree.value.root.childrenItems ?? List<MailboxNode>.empty())
|
||||
@@ -706,8 +732,9 @@ class MailboxController extends BaseMailboxController
|
||||
.toList();
|
||||
|
||||
if (listRoleMissing.isEmpty || accountId == null || session == null) {
|
||||
autoCreateVirtualFolder(
|
||||
mailboxDashBoardController.isAINeedsActionEnabled,
|
||||
updateMailboxTree(
|
||||
mailboxCollection: updateMailboxCollection(currentMailboxCollection),
|
||||
isRefreshTrigger: false,
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -726,8 +753,9 @@ class MailboxController extends BaseMailboxController
|
||||
|
||||
Future<void> _handleCreateDefaultFolderIfMissingSuccess(CreateDefaultMailboxAllSuccess success) async {
|
||||
if (success.listMailbox.isEmpty) {
|
||||
autoCreateVirtualFolder(
|
||||
mailboxDashBoardController.isAINeedsActionEnabled,
|
||||
updateMailboxTree(
|
||||
mailboxCollection: updateMailboxCollection(currentMailboxCollection),
|
||||
isRefreshTrigger: false,
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -743,13 +771,13 @@ class MailboxController extends BaseMailboxController
|
||||
allMailboxes.add(mailbox.toPresentationMailbox());
|
||||
}
|
||||
|
||||
await buildTree(allMailboxes.withoutVirtualMailbox);
|
||||
await buildTree(
|
||||
allMailboxes.withoutVirtualMailbox,
|
||||
onUpdateMailboxCollectionCallback: updateMailboxCollection,
|
||||
);
|
||||
if (currentContext != null) {
|
||||
syncAllMailboxWithDisplayName(currentContext!);
|
||||
}
|
||||
autoCreateVirtualFolder(
|
||||
mailboxDashBoardController.isAINeedsActionEnabled,
|
||||
);
|
||||
_setMapMailbox();
|
||||
_setOutboxMailbox();
|
||||
}
|
||||
@@ -1339,7 +1367,10 @@ class MailboxController extends BaseMailboxController
|
||||
currentMailboxState = success.currentMailboxState;
|
||||
log('MailboxController::_handleGetAllMailboxSuccess:currentMailboxState: $currentMailboxState');
|
||||
final listMailboxDisplayed = success.mailboxList.listSubscribedMailboxesAndDefaultMailboxes;
|
||||
await buildTree(listMailboxDisplayed.withoutVirtualMailbox);
|
||||
await buildTree(
|
||||
listMailboxDisplayed.withoutVirtualMailbox,
|
||||
onUpdateMailboxCollectionCallback: updateMailboxCollection,
|
||||
);
|
||||
if (currentContext != null) {
|
||||
syncAllMailboxWithDisplayName(currentContext!);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user