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
@@ -120,6 +120,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dow
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart' as search;
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/ai_scribe/setup_ai_needs_action_setting_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/ai_scribe/setup_cached_ai_scribe_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/cleanup_recent_search_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/delete_emails_in_mailbox_extension.dart';
@@ -303,6 +304,7 @@ class MailboxDashBoardController extends ReloadableController
final isRecoveringDeletedMessage = RxBool(false);
final localFileDraggableAppState = Rxn<DraggableAppState>();
final isSenderImportantFlagEnabled = RxBool(true);
final isAINeedsActionSettingEnabled = RxBool(false);
final isAppGridDialogDisplayed = RxBool(false);
final isDrawerOpened = RxBool(false);
final isContextMenuOpened = RxBool(false);
@@ -512,6 +514,7 @@ class MailboxDashBoardController extends ReloadableController
);
} else if (success is GetServerSettingSuccess) {
isSenderImportantFlagEnabled.value = success.settingOption.isDisplaySenderPriority;
setupAINeedsActionSetting(options: success.settingOption);
initializeAppLanguage(success);
} else if (success is ClearMailboxSuccess) {
clearMailboxSuccess(success);
@@ -568,6 +571,7 @@ class MailboxDashBoardController extends ReloadableController
_handleIdentityCache();
} else if (failure is GetServerSettingFailure) {
isSenderImportantFlagEnabled.value = true;
setupAINeedsActionSetting();
} else if (failure is GetAllIdentitiesFailure) {
_handleGetAllIdentitiesFailure();
} else if (failure is ClearMailboxFailure) {
@@ -0,0 +1,21 @@
import 'package:get/get.dart';
import 'package:server_settings/server_settings/tmail_server_settings.dart';
import 'package:server_settings/server_settings/tmail_server_settings_extension.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
extension SetupAiNeedsActionSettingExtension on MailboxDashBoardController {
void setupAINeedsActionSetting({TMailServerSettingOptions? options}) {
if (options != null) {
isAINeedsActionSettingEnabled.value = options.isAINeedsActionEnabled;
} else {
isAINeedsActionSettingEnabled.value = false;
}
if (isAINeedsActionSettingEnabled.isTrue) {
dispatchMailboxUIAction(AutoCreateActionRequiredFolderMailboxAction());
} else {
dispatchMailboxUIAction(AutoRemoveActionRequiredFolderMailboxAction());
}
}
}
@@ -16,4 +16,7 @@ extension HandleAiActionExtension on MailboxDashBoardController {
currentAccountId,
);
}
bool get isAINeedsActionEnabled =>
isAINeedsActionSettingEnabled.value && isAiCapabilitySupported;
}