feat(ai-scribe): Load AI scribe config in dashboard

This commit is contained in:
dab246
2025-12-19 15:05:41 +07:00
committed by Dat H. Pham
parent 256234b3d8
commit 6e56a50713
18 changed files with 114 additions and 50 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_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';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_action_type_for_email_selection.dart';
@@ -148,11 +149,14 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/ai_scribe_config.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_ai_scribe_config_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_ai_scribe_config_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/save_language_interactor.dart';
@@ -273,6 +277,7 @@ class MailboxDashBoardController extends ReloadableController
SaveLanguageInteractor? saveLanguageInteractor;
GetTextFormattingMenuStateInteractor? getTextFormattingMenuStateInteractor;
SaveTextFormattingMenuStateInteractor? saveTextFormattingMenuStateInteractor;
GetAIScribeConfigInteractor? getAIScribeConfigInteractor;
final scaffoldKey = GlobalKey<ScaffoldState>();
final selectedMailbox = Rxn<PresentationMailbox>();
@@ -304,6 +309,7 @@ class MailboxDashBoardController extends ReloadableController
final isPopupMenuOpened = RxBool(false);
final octetsQuota = Rxn<Quota>();
final isTextFormattingMenuOpened = RxBool(false);
final cachedAIScribeConfig = Rx<AIScribeConfig>(AIScribeConfig.initial());
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
Map<MailboxId, PresentationMailbox> mapMailboxById = {};
@@ -399,6 +405,7 @@ class MailboxDashBoardController extends ReloadableController
}
_handleArguments();
_loadAppGrid();
loadAIScribeConfig();
super.onReady();
}
@@ -524,6 +531,8 @@ class MailboxDashBoardController extends ReloadableController
setUpDefaultEmailSortOrder(success.emailSortOrderType);
} else if (success is GetTextFormattingMenuStateSuccess) {
updateTextFormattingMenuState(success.isDisplayed);
} else if (success is GetAIScribeConfigSuccess) {
handleLoadAIScribeConfigSuccess(success.aiScribeConfig);
} else {
super.handleSuccessViewState(success);
}
@@ -571,6 +580,8 @@ class MailboxDashBoardController extends ReloadableController
backToHomeScreen();
} else if (failure is GetTextFormattingMenuStateFailure) {
updateTextFormattingMenuState(false);
} else if (failure is GetAIScribeConfigFailure) {
handleLoadAIScribeConfigFailure();
} else {
super.handleFailureViewState(failure);
}
@@ -2047,6 +2058,7 @@ class MailboxDashBoardController extends ReloadableController
notifyThreadDetailSettingUpdated();
getServerSetting();
spamReportController.getSpamReportStateAction();
loadAIScribeConfig();
}
Future<List<PresentationEmail>> quickSearchEmails(String query) async {
@@ -2123,6 +2135,7 @@ class MailboxDashBoardController extends ReloadableController
notifyThreadDetailSettingUpdated();
getServerSetting();
spamReportController.getSpamReportStateAction();
loadAIScribeConfig();
}
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
@@ -2451,7 +2464,7 @@ class MailboxDashBoardController extends ReloadableController
void updateEmailList(List<PresentationEmail> newEmailList) {
emailsInCurrentMailbox.value = newEmailList;
}
void openMailboxAction(PresentationMailbox presentationMailbox) {
dispatchMailboxUIAction(OpenMailboxAction(presentationMailbox));
}
@@ -3217,7 +3230,7 @@ class MailboxDashBoardController extends ReloadableController
leadingSVGIcon: imagePaths.icRecoverDeletedMessages,
leadingSVGIconColor: Colors.white,
backgroundColor: AppColor.primaryColor,
textColor: Colors.white,
textColor: Colors.white,
);
}
}
@@ -3229,7 +3242,7 @@ class MailboxDashBoardController extends ReloadableController
if (currentAccountId != null && currentSession != null) {
final arguments = EmailRecoveryArguments(currentAccountId, currentSession);
final result = PlatformInfo.isWeb
final result = PlatformInfo.isWeb
? await DialogRouter.pushGeneralDialog(
routeName: AppRoutes.emailRecovery,
arguments: arguments,