TF-4141 Add the AI needs-action option into the user settings.

This commit is contained in:
dab246
2025-12-23 01:13:17 +07:00
committed by Dat H. Pham
parent cb0471ecb7
commit 1661210e04
19 changed files with 171 additions and 35 deletions
@@ -35,4 +35,8 @@ class OpenMailboxAction extends MailboxUIAction {
class SystemBackToInboxAction extends MailboxUIAction {}
class RefreshAllMailboxAction extends MailboxUIAction {}
class RefreshAllMailboxAction extends MailboxUIAction {}
class AutoCreateActionRequiredFolderMailboxAction extends MailboxUIAction {}
class AutoRemoveActionRequiredFolderMailboxAction extends MailboxUIAction {}
@@ -42,4 +42,24 @@ extension HandleActionRequiredTabExtension on BaseMailboxController {
bool _allMailboxesContains(MailboxId id) {
return allMailboxes.any((mailbox) => mailbox.id == id);
}
void removeActionRequiredFolder() {
final folder = PresentationMailbox.actionRequiredFolder;
_removeFromDefaultMailboxTree(folder.id);
_removeFromAllMailboxes(folder.id);
}
void _removeFromDefaultMailboxTree(MailboxId folderId) {
final root = defaultMailboxTree.value.root;
final children = List<MailboxNode>.from(root.childrenItems ?? [])
..removeWhere((node) => node.item.id == folderId);
defaultMailboxTree.value = MailboxTree(
root.copyWith(children: children),
);
}
void _removeFromAllMailboxes(MailboxId folderId) {
allMailboxes.removeWhere((mailbox) => mailbox.id == folderId);
}
}
@@ -319,6 +319,15 @@ class MailboxController extends BaseMailboxController
} 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();
}
}
});
@@ -1564,7 +1573,7 @@ class MailboxController extends BaseMailboxController
void autoCreateVirtualFolder() {
addFavoriteFolderToMailboxList();
if (mailboxDashBoardController.isAiCapabilitySupported) {
if (mailboxDashBoardController.isAINeedsActionEnabled) {
addActionRequiredFolder();
}
}