TF-4082 Save text formatting menu state to user's preferences when send email or close composer

This commit is contained in:
dab246
2025-10-02 16:02:49 +07:00
committed by Dat H. Pham
parent 2e54493a69
commit 6a78d57619
7 changed files with 74 additions and 0 deletions
@@ -100,6 +100,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_
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';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_text_formatting_menu_state_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_email_sort_order_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_last_time_dismissed_spam_reported_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_spam_report_state_interactor.dart';
@@ -411,6 +412,11 @@ class MailboxDashBoardBindings extends BaseBindings {
Get.find<ManageAccountRepository>(),
),
);
Get.lazyPut(
() => SaveTextFormattingMenuStateInteractor(
Get.find<ManageAccountRepository>(),
),
);
}
@override
@@ -112,6 +112,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_tex
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';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_text_formatting_menu_state_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_email_sort_order_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/download_ui_action.dart';
@@ -269,6 +270,7 @@ class MailboxDashBoardController extends ReloadableController
CreateNewEmailRuleFilterInteractor? createNewEmailRuleFilterInteractor;
SaveLanguageInteractor? saveLanguageInteractor;
GetTextFormattingMenuStateInteractor? getTextFormattingMenuStateInteractor;
SaveTextFormattingMenuStateInteractor? saveTextFormattingMenuStateInteractor;
final scaffoldKey = GlobalKey<ScaffoldState>();
final selectedMailbox = Rxn<PresentationMailbox>();
@@ -13,6 +13,7 @@ import 'package:tmail_ui_user/features/email/presentation/extensions/composer_ar
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_text_formatting_menu_state_extension.dart';
import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_arguments.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
@@ -125,6 +126,8 @@ extension OpenAndCloseComposerExtension on MailboxDashBoardController {
if (composerId != null) {
await removeComposerCacheByIdOnWeb(composerId);
}
saveTextFormattingMenuState();
}
void _handleResultAfterCloseComposer(dynamic result) {
@@ -1,4 +1,6 @@
import 'package:core/utils/app_logger.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/save_text_formatting_menu_state_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -13,5 +15,17 @@ extension UpdateTextFormattingMenuStateExtension on MailboxDashBoardController {
void updateTextFormattingMenuState(bool isDisplayed) {
isTextFormattingMenuOpened.value = isDisplayed;
log('$runtimeType::updateTextFormattingMenuState(): isDisplayed: $isDisplayed');
}
void saveTextFormattingMenuState() {
saveTextFormattingMenuStateInteractor =
getBinding<SaveTextFormattingMenuStateInteractor>();
if (saveTextFormattingMenuStateInteractor == null) return;
final isDisplayed = isTextFormattingMenuOpened.value;
consumeState(
saveTextFormattingMenuStateInteractor!.execute(isDisplayed),
);
}
}