From b58a0179f969e0c71df87efeda62aa07d2186bd0 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 6 Mar 2024 03:31:34 +0700 Subject: [PATCH] TF-2667 Refresh thread & mailbox view when saving message success --- .../save_email_as_drafts_interactor.dart | 40 ---- .../update_email_drafts_interactor.dart | 41 ---- .../presentation/composer_bindings.dart | 8 - .../presentation/composer_controller.dart | 96 ++++---- .../composer/presentation/composer_view.dart | 4 +- .../presentation/composer_view_web.dart | 4 +- .../model/save_to_draft_arguments.dart | 26 --- .../saving_message_to_drafts_dialog_view.dart | 208 ------------------ .../bindings/mailbox_dashboard_bindings.dart | 12 - .../mailbox_dashboard_controller.dart | 32 --- 10 files changed, 54 insertions(+), 417 deletions(-) delete mode 100644 lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart delete mode 100644 lib/features/composer/domain/usecases/update_email_drafts_interactor.dart delete mode 100644 lib/features/composer/presentation/model/save_to_draft_arguments.dart delete mode 100644 lib/features/composer/presentation/widgets/web/saving_message_to_drafts_dialog_view.dart diff --git a/lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart b/lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart deleted file mode 100644 index 58bbe60f3..000000000 --- a/lib/features/composer/domain/usecases/save_email_as_drafts_interactor.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'package:core/core.dart'; -import 'package:dartz/dartz.dart'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/session/session.dart'; -import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_drafts_state.dart'; -import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; - -class SaveEmailAsDraftsInteractor { - final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - - SaveEmailAsDraftsInteractor(this._emailRepository, this._mailboxRepository); - - Stream> execute(Session session, AccountId accountId, Email email) async* { - try { - yield Right(SaveEmailAsDraftsLoading()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - - final emailAsDrafts = await _emailRepository.saveEmailAsDrafts(session, accountId, email); - yield Right( - SaveEmailAsDraftsSuccess( - emailAsDrafts.id!, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState - ) - ); - } catch (e) { - yield Left(SaveEmailAsDraftsFailure(e)); - } - } -} \ No newline at end of file diff --git a/lib/features/composer/domain/usecases/update_email_drafts_interactor.dart b/lib/features/composer/domain/usecases/update_email_drafts_interactor.dart deleted file mode 100644 index 708066607..000000000 --- a/lib/features/composer/domain/usecases/update_email_drafts_interactor.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:core/presentation/state/failure.dart'; -import 'package:core/presentation/state/success.dart'; -import 'package:dartz/dartz.dart'; -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/session/session.dart'; -import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart'; -import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; - -class UpdateEmailDraftsInteractor { - final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - - UpdateEmailDraftsInteractor(this._emailRepository, this._mailboxRepository); - - Stream> execute(Session session, AccountId accountId, Email newEmail, EmailId oldEmailId) async* { - try { - yield Right(UpdatingEmailDrafts()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - - final newEmailDrafts = await _emailRepository.updateEmailDrafts(session, accountId, newEmail, oldEmailId); - yield Right( - UpdateEmailDraftsSuccess( - newEmailDrafts.id!, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState - ) - ); - } catch (e) { - yield Left(UpdateEmailDraftsFailure(e)); - } - } -} \ No newline at end of file diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index d22bf4cbf..2c56aff05 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -13,8 +13,6 @@ import 'package:tmail_ui_user/features/composer/domain/repository/contact_reposi import 'package:tmail_ui_user/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/create_new_and_send_email_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/download_image_as_base64_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/save_email_as_drafts_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/update_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/upload_attachment_interactor.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart'; import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart'; @@ -191,13 +189,7 @@ class ComposerBindings extends BaseBindings { Get.lazyPut(() => LocalFilePickerInteractor()); Get.lazyPut(() => LocalImagePickerInteractor()); Get.lazyPut(() => UploadAttachmentInteractor(Get.find())); - Get.lazyPut(() => SaveEmailAsDraftsInteractor( - Get.find(), - Get.find())); Get.lazyPut(() => GetEmailContentInteractor(Get.find())); - Get.lazyPut(() => UpdateEmailDraftsInteractor( - Get.find(), - Get.find())); Get.lazyPut(() => RemoveComposerCacheOnWebInteractor(Get.find())); Get.lazyPut(() => SaveComposerCacheOnWebInteractor(Get.find())); Get.lazyPut(() => DownloadImageAsBase64Interactor(Get.find())); diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 730db176d..d2eb6ef26 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -60,7 +60,6 @@ import 'package:tmail_ui_user/features/composer/presentation/model/create_email_ import 'package:tmail_ui_user/features/composer/presentation/model/draggable_email_address.dart'; import 'package:tmail_ui_user/features/composer/presentation/model/inline_image.dart'; import 'package:tmail_ui_user/features/composer/presentation/model/prefix_recipient_state.dart'; -import 'package:tmail_ui_user/features/composer/presentation/model/save_to_draft_arguments.dart'; import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart'; import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart'; import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/from_composer_bottom_sheet_builder.dart'; @@ -341,27 +340,6 @@ class ComposerController extends BaseController with DragDropFileMixin { } }); }); - - dashboardViewStateWorker = ever(mailboxDashBoardController.viewState, (state) { - state.fold( - (failure) { - if (failure is SaveEmailAsDraftsFailure || - failure is UpdateEmailDraftsFailure) { - _saveToDraftButtonState = ButtonState.enabled; - } - }, - (success) { - if (success is SaveEmailAsDraftsSuccess) { - _emailIdEditing = success.emailId; - _saveToDraftButtonState = ButtonState.enabled; - log('ComposerController::_listenStreamEvent::dashboardViewStateWorker:SaveEmailAsDraftsSuccess:emailIdEditing: $_emailIdEditing'); - } else if (success is UpdateEmailDraftsSuccess) { - _emailIdEditing = success.emailId; - _saveToDraftButtonState = ButtonState.enabled; - log('ComposerController::_listenStreamEvent::dashboardViewStateWorker:UpdateEmailDraftsSuccess:emailIdEditing: $_emailIdEditing'); - } - }); - }); } void _listenBrowserTabRefresh() { @@ -1215,38 +1193,62 @@ class ComposerController extends BaseController with DragDropFileMixin { return false; } - void saveToDraftAction(BuildContext context) async { + void handleClickSaveAsDraftsButton(BuildContext context) async { if (_saveToDraftButtonState == ButtonState.disabled) { - log('ComposerController::saveToDraftAction: Saving to draft'); + log('ComposerController::handleClickSaveAsDraftsButton: Saving to draft'); return; } _saveToDraftButtonState = ButtonState.disabled; - final accountId = mailboxDashBoardController.accountId.value; - final session = mailboxDashBoardController.sessionCurrent; - final draftMailboxId = mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleDrafts]; - - if (draftMailboxId == null || session == null || accountId == null) { - log('ComposerController::saveToDraftAction: Param is NULL'); + if (composerArguments.value == null || + mailboxDashBoardController.sessionCurrent == null || + mailboxDashBoardController.accountId.value == null || + mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleDrafts] == null + ) { + log('ComposerController::handleClickSaveAsDraftsButton: SESSION or ACCOUNT_ID or ARGUMENTS is NULL'); + _saveToDraftButtonState = ButtonState.enabled; return; } - final newEmail = await _generateEmail( - context, - session.username, - asDrafts: true, - draftMailboxId: draftMailboxId, - arguments: mailboxDashBoardController.composerArguments); + final emailContent = await _getContentInEditor(); - mailboxDashBoardController.saveEmailToDraft( - arguments: SaveToDraftArguments( - session: session, - accountId:accountId, - newEmail: newEmail, - oldEmailId: _emailIdEditing - ) + final resultState = await _showSavingMessageToDraftsDialog( + emailContent: emailContent, + draftEmailId: _emailIdEditing ); + + if (resultState is SaveEmailAsDraftsSuccess) { + _saveToDraftButtonState = ButtonState.enabled; + _emailIdEditing = resultState.emailId; + mailboxDashBoardController.consumeState(Stream.value(Right(resultState))); + } else if (resultState is UpdateEmailDraftsSuccess) { + _saveToDraftButtonState = ButtonState.enabled; + _emailIdEditing = resultState.emailId; + mailboxDashBoardController.consumeState(Stream.value(Right(resultState))); + } else if ((resultState is SaveEmailAsDraftsFailure || + resultState is UpdateEmailDraftsFailure || + resultState is GenerateEmailFailure) && + context.mounted + ) { + _showConfirmDialogWhenSaveMessageToDraftsFailure( + context: context, + failure: resultState, + onConfirmAction: () { + _saveToDraftButtonState = ButtonState.enabled; + _autoFocusFieldWhenLauncher(); + }, + onCancelAction: () async { + _saveToDraftButtonState = ButtonState.enabled; + await Future.delayed( + const Duration(milliseconds: 100), + _closeComposerAction + ); + } + ); + } else { + _saveToDraftButtonState = ButtonState.enabled; + } } void _addAttachmentFromFileShare(List listSharedMediaFile) { @@ -2214,7 +2216,9 @@ class ComposerController extends BaseController with DragDropFileMixin { void _showConfirmDialogWhenSaveMessageToDraftsFailure({ required BuildContext context, - required FeatureFailure failure + required FeatureFailure failure, + VoidCallback? onConfirmAction, + VoidCallback? onCancelAction, }) { showConfirmDialogAction( context, @@ -2223,11 +2227,11 @@ class ComposerController extends BaseController with DragDropFileMixin { AppLocalizations.of(context).edit, cancelTitle: AppLocalizations.of(context).closeAnyway, alignCenter: true, - onConfirmAction: () { + onConfirmAction: onConfirmAction ?? () { _closeComposerButtonState = ButtonState.enabled; _autoFocusFieldWhenLauncher(); }, - onCancelAction: () async { + onCancelAction: onCancelAction ?? () async { _closeComposerButtonState = ButtonState.enabled; await Future.delayed( const Duration(milliseconds: 100), diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index e9c707c18..3c58fab30 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -361,7 +361,7 @@ class ComposerView extends GetWidget { ), TabletBottomBarComposerWidget( deleteComposerAction: () => controller.handleClickDeleteComposer(context), - saveToDraftAction: () => controller.saveToDraftAction(context), + saveToDraftAction: () => controller.handleClickSaveAsDraftsButton(context), sendMessageAction: () => controller.handleClickSendButton(context), requestReadReceiptAction: (position) { controller.openPopupMenuAction( @@ -453,7 +453,7 @@ class ComposerView extends GetWidget { padding: ComposerStyle.popupItemPadding, onCallbackAction: () { popBack(); - controller.saveToDraftAction(context); + controller.handleClickSaveAsDraftsButton(context); } ) ), diff --git a/lib/features/composer/presentation/composer_view_web.dart b/lib/features/composer/presentation/composer_view_web.dart index d1b10e522..a7c7b0e18 100644 --- a/lib/features/composer/presentation/composer_view_web.dart +++ b/lib/features/composer/presentation/composer_view_web.dart @@ -754,7 +754,7 @@ class ComposerView extends GetWidget { insertImageAction: () => controller.insertImage(context, constraints.maxWidth), showCodeViewAction: controller.richTextWebController.toggleCodeView, deleteComposerAction: () => controller.handleClickDeleteComposer(context), - saveToDraftAction: () => controller.saveToDraftAction(context), + saveToDraftAction: () => controller.handleClickSaveAsDraftsButton(context), sendMessageAction: () => controller.handleClickSendButton(context), requestReadReceiptAction: (position) { controller.openPopupMenuAction( @@ -836,7 +836,7 @@ class ComposerView extends GetWidget { padding: ComposerStyle.popupItemPadding, onCallbackAction: () { popBack(); - controller.saveToDraftAction(context); + controller.handleClickSaveAsDraftsButton(context); } ) ), diff --git a/lib/features/composer/presentation/model/save_to_draft_arguments.dart b/lib/features/composer/presentation/model/save_to_draft_arguments.dart deleted file mode 100644 index b29a3855c..000000000 --- a/lib/features/composer/presentation/model/save_to_draft_arguments.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/session/session.dart'; -import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/main/routes/router_arguments.dart'; - -class SaveToDraftArguments extends RouterArguments { - final Session session; - final AccountId accountId; - final Email newEmail; - final EmailId? oldEmailId; - - SaveToDraftArguments({ - required this.session, - required this.accountId, - required this.newEmail, - required this.oldEmailId - }); - - @override - List get props => [ - session, - accountId, - newEmail, - oldEmailId, - ]; -} diff --git a/lib/features/composer/presentation/widgets/web/saving_message_to_drafts_dialog_view.dart b/lib/features/composer/presentation/widgets/web/saving_message_to_drafts_dialog_view.dart deleted file mode 100644 index ea8db6d62..000000000 --- a/lib/features/composer/presentation/widgets/web/saving_message_to_drafts_dialog_view.dart +++ /dev/null @@ -1,208 +0,0 @@ -import 'dart:async'; -import 'dart:math'; - -import 'package:core/presentation/extensions/capitalize_extension.dart'; -import 'package:core/presentation/extensions/color_extension.dart'; -import 'package:core/presentation/state/failure.dart'; -import 'package:core/presentation/state/success.dart'; -import 'package:core/utils/app_logger.dart'; -import 'package:dartz/dartz.dart' as dartz; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/composer/domain/state/generate_email_state.dart'; -import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/create_new_and_send_email_interactor.dart'; -import 'package:tmail_ui_user/features/composer/presentation/model/create_email_request.dart'; -import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; -import 'package:tmail_ui_user/main/routes/route_navigation.dart'; - -class SavingMessageToDraftsDialogView extends StatefulWidget { - - final CreateEmailRequest createEmailRequest; - final CreateNewAndSendEmailInteractor createNewAndSendEmailInteractor; - - const SavingMessageToDraftsDialogView({ - super.key, - required this.createEmailRequest, - required this.createNewAndSendEmailInteractor, - }); - - @override - State createState() => _SavingMessageToDraftsDialogViewState(); -} - -class _SavingMessageToDraftsDialogViewState extends State { - - StreamSubscription? _sendingStreamSubscription; - final ValueNotifier?> _sendingNotifier = ValueNotifier(null); - - @override - void initState() { - super.initState(); - _sendingStreamSubscription = widget.createNewAndSendEmailInteractor - .execute(widget.createEmailRequest) - .listen( - _handleDataStream, - onError: _handleErrorStream - ); - } - - void _handleDataStream(dartz.Either newState) { - _sendingNotifier.value = newState; - - newState.fold( - (failure) { - if (failure is SendEmailFailure || failure is GenerateEmailFailure) { - popBack(result: failure); - } - }, - (success) { - if (success is SendEmailSuccess) { - popBack(result: success); - } - } - ); - } - - void _handleErrorStream(Object error, StackTrace stackTrace) { - logError('_SendingMessageDialogViewState::_handleErrorStream: Exception = $error'); - popBack(result: SendEmailFailure(exception: error)); - } - - @override - Widget build(BuildContext context) { - return Dialog( - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.all(Radius.circular(12))), - insetPadding: const EdgeInsets.symmetric( - horizontal: 24.0, - vertical: 16.0 - ), - alignment: Alignment.center, - child: Container( - decoration: const BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(12)), - color: Colors.white, - ), - width: min(context.width, 400), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - width: double.infinity, - clipBehavior: Clip.antiAlias, - padding: const EdgeInsetsDirectional.symmetric(vertical: 8, horizontal: 12), - decoration: const BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(12)), - color: AppColor.colorItemSelected, - ), - alignment: Alignment.center, - child: Text( - AppLocalizations.of(context).sendingMessage.capitalizeFirstEach, - style: Theme.of(context).textTheme.labelLarge?.copyWith( - color: Colors.black, - fontWeight: FontWeight.bold, - fontSize: 17 - ), - ), - ), - const Divider(), - Column( - mainAxisSize: MainAxisSize.min, - children: [ - Padding( - padding: const EdgeInsetsDirectional.only(start: 16, end: 16, top: 12, bottom: 4), - child: Row( - children: [ - Text( - '${AppLocalizations.of(context).status}:', - style: Theme.of(context).textTheme.labelMedium?.copyWith( - color: Colors.black, - fontWeight: FontWeight.w500, - fontSize: 14 - ), - ), - const SizedBox(width: 8), - Expanded( - child: ValueListenableBuilder( - valueListenable: _sendingNotifier, - builder: (context, value, child) { - if (value == null) { - return child!; - } - - return value.fold( - (failure) => child!, - (success) { - if (success is GenerateEmailLoading) { - return Text( - 'Creating email...', - style: Theme.of(context).textTheme.labelSmall?.copyWith( - color: AppColor.labelColor, - fontSize: 14 - ), - ); - } else if (success is SendEmailLoading) { - return Text( - '${AppLocalizations.of(context).sendingMessage}...', - style: Theme.of(context).textTheme.labelSmall?.copyWith( - color: AppColor.labelColor, - fontSize: 14 - ), - ); - } else { - return child!; - } - } - ); - }, - child: Text( - '${AppLocalizations.of(context).sendingMessage}...', - style: Theme.of(context).textTheme.labelSmall?.copyWith( - color: AppColor.labelColor, - fontSize: 14 - ), - ), - ), - ) - ], - ), - ), - Padding( - padding: const EdgeInsetsDirectional.only(start: 16, end: 16, top: 4, bottom: 24), - child: Row( - children: [ - Text( - '${AppLocalizations.of(context).progress}:', - style: Theme.of(context).textTheme.labelMedium?.copyWith( - color: Colors.black, - fontWeight: FontWeight.w500, - fontSize: 14 - ), - ), - const SizedBox(width: 8), - Expanded( - child: LinearProgressIndicator( - color: Colors.white.withOpacity(0.6), - backgroundColor: AppColor.primaryColor, - borderRadius: const BorderRadius.all(Radius.circular(12)), - ), - ) - ], - ), - ) - ], - ) - ], - ), - ), - ); - } - - @override - void dispose() { - _sendingStreamSubscription?.cancel(); - _sendingNotifier.dispose(); - super.dispose(); - } -} diff --git a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart index 0c33fba6e..098226137 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -8,9 +8,7 @@ import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/caching/clients/recent_search_cache_client.dart'; import 'package:tmail_ui_user/features/composer/data/repository/contact_repository_impl.dart'; import 'package:tmail_ui_user/features/composer/domain/repository/contact_repository.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/save_email_as_drafts_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/update_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart'; import 'package:tmail_ui_user/features/email/data/datasource/html_datasource.dart'; import 'package:tmail_ui_user/features/email/data/datasource/print_file_datasource.dart'; @@ -170,8 +168,6 @@ class MailboxDashBoardBindings extends BaseBindings { Get.find(), Get.find(), Get.find(), - Get.find(), - Get.find(), Get.find(), Get.find(), Get.find(), @@ -328,14 +324,6 @@ class MailboxDashBoardBindings extends BaseBindings { )); SendingQueueInteractorBindings().dependencies(); Get.lazyPut(() => StoreSessionInteractor(Get.find())); - Get.lazyPut(() => SaveEmailAsDraftsInteractor( - Get.find(), - Get.find() - )); - Get.lazyPut(() => UpdateEmailDraftsInteractor( - Get.find(), - Get.find() - )); Get.lazyPut(() => UnsubscribeEmailInteractor(Get.find())); Get.lazyPut(() => RestoredDeletedMessageInteractor( Get.find(), diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 76b385f63..cdf17317e 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -35,13 +35,10 @@ import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_draft import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart'; import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/save_email_as_drafts_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart'; -import 'package:tmail_ui_user/features/composer/domain/usecases/update_email_drafts_interactor.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_bindings.dart'; import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart'; import 'package:tmail_ui_user/features/composer/presentation/model/compose_action_mode.dart'; -import 'package:tmail_ui_user/features/composer/presentation/model/save_to_draft_arguments.dart'; import 'package:tmail_ui_user/features/contact/presentation/model/contact_arguments.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart'; import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart'; @@ -179,8 +176,6 @@ class MailboxDashBoardController extends ReloadableController { final GetAllSendingEmailInteractor _getAllSendingEmailInteractor; final StoreSessionInteractor _storeSessionInteractor; final EmptySpamFolderInteractor _emptySpamFolderInteractor; - final SaveEmailAsDraftsInteractor _saveEmailAsDraftsInteractor; - final UpdateEmailDraftsInteractor _updateEmailDraftsInteractor; final DeleteSendingEmailInteractor _deleteSendingEmailInteractor; final UnsubscribeEmailInteractor _unsubscribeEmailInteractor; final RestoredDeletedMessageInteractor _restoreDeletedMessageInteractor; @@ -258,8 +253,6 @@ class MailboxDashBoardController extends ReloadableController { this._getAllSendingEmailInteractor, this._storeSessionInteractor, this._emptySpamFolderInteractor, - this._saveEmailAsDraftsInteractor, - this._updateEmailDraftsInteractor, this._deleteSendingEmailInteractor, this._unsubscribeEmailInteractor, this._restoreDeletedMessageInteractor, @@ -1258,8 +1251,6 @@ class MailboxDashBoardController extends ReloadableController { composerOverlayState.value = ComposerOverlayState.inActive; if (result is SendingEmailArguments) { handleSendEmailAction(result); - } else if (result is SaveToDraftArguments) { - saveEmailToDraft(arguments: result); } else if (result is SendEmailSuccess || result is SaveEmailAsDraftsSuccess || result is UpdateEmailDraftsSuccess) { @@ -1395,8 +1386,6 @@ class MailboxDashBoardController extends ReloadableController { final result = await push(AppRoutes.composer, arguments: arguments); if (result is SendingEmailArguments) { handleSendEmailAction(result); - } else if (result is SaveToDraftArguments) { - saveEmailToDraft(arguments: result); } else if (result is SendEmailSuccess || result is SaveEmailAsDraftsSuccess || result is UpdateEmailDraftsSuccess) { @@ -2159,27 +2148,6 @@ class MailboxDashBoardController extends ReloadableController { attachmentDraggableAppState.value = DraggableAppState.inActive; } - void saveEmailToDraft({required SaveToDraftArguments arguments}) { - if (arguments.oldEmailId != null) { - consumeState( - _updateEmailDraftsInteractor.execute( - arguments.session, - arguments.accountId, - arguments.newEmail, - arguments.oldEmailId! - ) - ); - } else { - consumeState( - _saveEmailAsDraftsInteractor.execute( - arguments.session, - arguments.accountId, - arguments.newEmail, - ) - ); - } - } - void _handleSendEmailSuccess(SendEmailSuccess success) { if (PlatformInfo.isMobile && success.emailRequest.storedSendingId != null &&