TF-4082 Setup text formatting menu state from user's preferences in composer

This commit is contained in:
dab246
2025-10-02 15:44:22 +07:00
committed by Dat H. Pham
parent 620d155dc3
commit 2e54493a69
17 changed files with 220 additions and 56 deletions
@@ -104,9 +104,11 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/exceptions/spam_
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_stored_email_sort_order_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_text_formatting_menu_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_stored_email_sort_order_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_text_formatting_menu_state_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_all_composer_cache_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_composer_cache_by_id_on_web_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
@@ -133,6 +135,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/select_search_filter_action_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_text_formatting_menu_state_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/web_auth_redirect_processor_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
@@ -265,6 +268,7 @@ class MailboxDashBoardController extends ReloadableController
GetServerSettingInteractor? getServerSettingInteractor;
CreateNewEmailRuleFilterInteractor? createNewEmailRuleFilterInteractor;
SaveLanguageInteractor? saveLanguageInteractor;
GetTextFormattingMenuStateInteractor? getTextFormattingMenuStateInteractor;
final scaffoldKey = GlobalKey<ScaffoldState>();
final selectedMailbox = Rxn<PresentationMailbox>();
@@ -295,6 +299,7 @@ class MailboxDashBoardController extends ReloadableController
final isContextMenuOpened = RxBool(false);
final isPopupMenuOpened = RxBool(false);
final octetsQuota = Rxn<Quota>();
final isTextFormattingMenuOpened = RxBool(false);
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
Map<MailboxId, PresentationMailbox> mapMailboxById = {};
@@ -383,6 +388,7 @@ class MailboxDashBoardController extends ReloadableController
listSearchFilterScrollController = ScrollController();
twakeAppManager.setExecutingBeforeReconnect(false);
registerReactiveObxVariableListener();
initialTextFormattingMenuState();
}
if (PlatformInfo.isIOS) {
_registerPendingCurrentEmailIdInNotification();
@@ -512,6 +518,8 @@ class MailboxDashBoardController extends ReloadableController
);
} else if (success is GetStoredEmailSortOrderSuccess) {
setUpDefaultEmailSortOrder(success.emailSortOrderType);
} else if (success is GetTextFormattingMenuStateSuccess) {
updateTextFormattingMenuState(success.isDisplayed);
} else {
super.handleSuccessViewState(success);
}
@@ -557,6 +565,8 @@ class MailboxDashBoardController extends ReloadableController
tryGetAuthenticatedAccountToUseApp();
} else if (isGetTokenOIDCFailure(failure)) {
backToHomeScreen();
} else if (failure is GetTextFormattingMenuStateFailure) {
updateTextFormattingMenuState(false);
} else {
super.handleFailureViewState(failure);
}