TF-4082 Save text formatting menu state to user's preferences when send email or close composer
This commit is contained in:
@@ -103,6 +103,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.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/validate_premium_storage_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/validate_premium_storage_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_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/model/draggable_app_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_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_identities_state.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_identities_interactor.dart';
|
||||||
@@ -1446,6 +1447,11 @@ class ComposerController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _closeComposerAction({dynamic result, bool closeOverlays = false}) {
|
void _closeComposerAction({dynamic result, bool closeOverlays = false}) {
|
||||||
|
if (PlatformInfo.isWeb && richTextWebController != null) {
|
||||||
|
mailboxDashBoardController.updateTextFormattingMenuState(
|
||||||
|
richTextWebController!.isFormattingOptionsEnabled,
|
||||||
|
);
|
||||||
|
}
|
||||||
mailboxDashBoardController.closeComposer(
|
mailboxDashBoardController.closeComposer(
|
||||||
result: result,
|
result: result,
|
||||||
closeOverlays: closeOverlays,
|
closeOverlays: closeOverlays,
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
|
||||||
|
class SavingTextFormattingMenuState extends LoadingState {}
|
||||||
|
|
||||||
|
class SaveTextFormattingMenuStateSuccess extends UIState {
|
||||||
|
final bool isDisplayed;
|
||||||
|
|
||||||
|
SaveTextFormattingMenuStateSuccess(this.isDisplayed);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [isDisplayed];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SaveTextFormattingMenuStateFailure extends FeatureFailure {
|
||||||
|
SaveTextFormattingMenuStateFailure(dynamic exception) : super(exception: exception);
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/save_text_formatting_menu_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/model/preferences/text_formatting_menu_config.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
|
||||||
|
|
||||||
|
class SaveTextFormattingMenuStateInteractor {
|
||||||
|
final ManageAccountRepository _manageAccountRepository;
|
||||||
|
|
||||||
|
SaveTextFormattingMenuStateInteractor(this._manageAccountRepository);
|
||||||
|
|
||||||
|
Stream<Either<Failure, Success>> execute(bool isDisplayed) async* {
|
||||||
|
try {
|
||||||
|
yield Right(SavingTextFormattingMenuState());
|
||||||
|
final preferencesSetting = await _manageAccountRepository.toggleLocalSettingsState(
|
||||||
|
TextFormattingMenuConfig(isDisplayed: isDisplayed),
|
||||||
|
);
|
||||||
|
yield Right(SaveTextFormattingMenuStateSuccess(
|
||||||
|
preferencesSetting.textFormattingMenuConfig.isDisplayed,
|
||||||
|
));
|
||||||
|
} catch (exception) {
|
||||||
|
yield Left(SaveTextFormattingMenuStateFailure(exception));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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_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/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_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_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_last_time_dismissed_spam_reported_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_spam_report_state_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.find<ManageAccountRepository>(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
Get.lazyPut(
|
||||||
|
() => SaveTextFormattingMenuStateInteractor(
|
||||||
|
Get.find<ManageAccountRepository>(),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
+2
@@ -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_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_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/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/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/dashboard_action.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/download_ui_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;
|
CreateNewEmailRuleFilterInteractor? createNewEmailRuleFilterInteractor;
|
||||||
SaveLanguageInteractor? saveLanguageInteractor;
|
SaveLanguageInteractor? saveLanguageInteractor;
|
||||||
GetTextFormattingMenuStateInteractor? getTextFormattingMenuStateInteractor;
|
GetTextFormattingMenuStateInteractor? getTextFormattingMenuStateInteractor;
|
||||||
|
SaveTextFormattingMenuStateInteractor? saveTextFormattingMenuStateInteractor;
|
||||||
|
|
||||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
final selectedMailbox = Rxn<PresentationMailbox>();
|
final selectedMailbox = Rxn<PresentationMailbox>();
|
||||||
|
|||||||
+3
@@ -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/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/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/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/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/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
@@ -125,6 +126,8 @@ extension OpenAndCloseComposerExtension on MailboxDashBoardController {
|
|||||||
if (composerId != null) {
|
if (composerId != null) {
|
||||||
await removeComposerCacheByIdOnWeb(composerId);
|
await removeComposerCacheByIdOnWeb(composerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
saveTextFormattingMenuState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _handleResultAfterCloseComposer(dynamic result) {
|
void _handleResultAfterCloseComposer(dynamic result) {
|
||||||
|
|||||||
+14
@@ -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/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/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
@@ -13,5 +15,17 @@ extension UpdateTextFormattingMenuStateExtension on MailboxDashBoardController {
|
|||||||
|
|
||||||
void updateTextFormattingMenuState(bool isDisplayed) {
|
void updateTextFormattingMenuState(bool isDisplayed) {
|
||||||
isTextFormattingMenuOpened.value = 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),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user