diff --git a/lib/features/composer/domain/state/save_email_as_drafts_state.dart b/lib/features/composer/domain/state/save_email_as_drafts_state.dart index ae82f2d46..1eddfdeea 100644 --- a/lib/features/composer/domain/state/save_email_as_drafts_state.dart +++ b/lib/features/composer/domain/state/save_email_as_drafts_state.dart @@ -1,22 +1,14 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; class SaveEmailAsDraftsLoading extends LoadingState {} -class SaveEmailAsDraftsSuccess extends UIActionState { +class SaveEmailAsDraftsSuccess extends UIState { final EmailId emailId; - SaveEmailAsDraftsSuccess( - this.emailId, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + SaveEmailAsDraftsSuccess(this.emailId); @override List get props => [emailId, ...super.props]; diff --git a/lib/features/composer/domain/state/send_email_state.dart b/lib/features/composer/domain/state/send_email_state.dart index 814e6c3cb..f52f3a6ac 100644 --- a/lib/features/composer/domain/state/send_email_state.dart +++ b/lib/features/composer/domain/state/send_email_state.dart @@ -2,27 +2,22 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.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/core/state.dart' as jmap; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_action_type.dart'; class SendEmailLoading extends LoadingState {} -class SendEmailSuccess extends UIActionState { +class SendEmailSuccess extends UIState { final EmailRequest emailRequest; SendEmailSuccess({ - jmap.State? currentEmailState, - jmap.State? currentMailboxState, required this.emailRequest, - }) : super(currentEmailState, currentMailboxState); + }); @override List get props => [ - ...super.props, emailRequest, ]; } diff --git a/lib/features/composer/domain/state/update_email_drafts_state.dart b/lib/features/composer/domain/state/update_email_drafts_state.dart index 47ca09cca..b6f8d8621 100644 --- a/lib/features/composer/domain/state/update_email_drafts_state.dart +++ b/lib/features/composer/domain/state/update_email_drafts_state.dart @@ -1,22 +1,14 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; class UpdatingEmailDrafts extends LoadingState {} -class UpdateEmailDraftsSuccess extends UIActionState { +class UpdateEmailDraftsSuccess extends UIState { final EmailId emailId; - UpdateEmailDraftsSuccess( - this.emailId, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + UpdateEmailDraftsSuccess(this.emailId); @override List get props => [emailId, ...super.props]; diff --git a/lib/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor.dart b/lib/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor.dart index dd7649a7d..ac651fc18 100644 --- a/lib/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor.dart +++ b/lib/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor.dart @@ -3,9 +3,6 @@ import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart' as dartz; import 'package:dio/dio.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/core/state.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:tmail_ui_user/features/composer/domain/exceptions/compose_email_exception.dart'; import 'package:tmail_ui_user/features/composer/domain/repository/composer_repository.dart'; @@ -15,17 +12,14 @@ import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts import 'package:tmail_ui_user/features/composer/presentation/model/create_email_request.dart'; import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.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'; import 'package:tmail_ui_user/main/exceptions/remote_exception.dart'; class CreateNewAndSaveEmailToDraftsInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; final ComposerRepository _composerRepository; CreateNewAndSaveEmailToDraftsInteractor( this._emailRepository, - this._mailboxRepository, this._composerRepository, ); @@ -36,11 +30,6 @@ class CreateNewAndSaveEmailToDraftsInteractor { try { yield dartz.Right(GenerateEmailLoading()); - final listCurrentState = await _getStoredCurrentState( - session: createEmailRequest.session, - accountId: createEmailRequest.accountId - ); - final emailCreated = await _createEmailObject(createEmailRequest); if (emailCreated != null) { @@ -55,11 +44,7 @@ class CreateNewAndSaveEmailToDraftsInteractor { ); yield dartz.Right( - SaveEmailAsDraftsSuccess( - emailDraftSaved.id!, - currentMailboxState: listCurrentState?.value1, - currentEmailState: listCurrentState?.value2 - ) + SaveEmailAsDraftsSuccess(emailDraftSaved.id!) ); } else { yield dartz.Right(UpdatingEmailDrafts()); @@ -73,11 +58,7 @@ class CreateNewAndSaveEmailToDraftsInteractor { ); yield dartz.Right( - UpdateEmailDraftsSuccess( - emailDraftSaved.id!, - currentMailboxState: listCurrentState?.value1, - currentEmailState: listCurrentState?.value2 - ) + UpdateEmailDraftsSuccess(emailDraftSaved.id!) ); } } else { @@ -112,24 +93,4 @@ class CreateNewAndSaveEmailToDraftsInteractor { return null; } } - - Future?> _getStoredCurrentState({ - required Session session, - required AccountId accountId - }) async { - try { - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ]); - - final mailboxState = listState.first; - final emailState = listState.last; - - return dartz.Tuple2(mailboxState, emailState); - } catch (e) { - logError('CreateNewAndSaveEmailToDraftsInteractor::_getStoredCurrentState: Exception: $e'); - return null; - } - } } \ No newline at end of file diff --git a/lib/features/composer/domain/usecases/create_new_and_send_email_interactor.dart b/lib/features/composer/domain/usecases/create_new_and_send_email_interactor.dart index cbff76b4d..ed980974c 100644 --- a/lib/features/composer/domain/usecases/create_new_and_send_email_interactor.dart +++ b/lib/features/composer/domain/usecases/create_new_and_send_email_interactor.dart @@ -5,7 +5,6 @@ import 'package:dartz/dartz.dart' as dartz; import 'package:dio/dio.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/core/state.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:tmail_ui_user/features/composer/domain/exceptions/compose_email_exception.dart'; import 'package:tmail_ui_user/features/composer/domain/repository/composer_repository.dart'; @@ -15,18 +14,15 @@ import 'package:tmail_ui_user/features/composer/presentation/extensions/create_e import 'package:tmail_ui_user/features/composer/presentation/model/create_email_request.dart'; import 'package:tmail_ui_user/features/email/domain/exceptions/email_exceptions.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'; import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_arguments.dart'; import 'package:tmail_ui_user/main/exceptions/remote_exception.dart'; class CreateNewAndSendEmailInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; final ComposerRepository _composerRepository; CreateNewAndSendEmailInteractor( this._emailRepository, - this._mailboxRepository, this._composerRepository, ); @@ -38,11 +34,6 @@ class CreateNewAndSendEmailInteractor { try { yield dartz.Right(GenerateEmailLoading()); - final listCurrentState = await _getStoredCurrentState( - session: createEmailRequest.session, - accountId: createEmailRequest.accountId - ); - sendingEmailArguments = await _createEmailObject(createEmailRequest); if (sendingEmailArguments != null) { @@ -67,8 +58,6 @@ class CreateNewAndSendEmailInteractor { yield dartz.Right( SendEmailSuccess( - currentMailboxState: listCurrentState?.value1, - currentEmailState: listCurrentState?.value2, emailRequest: sendingEmailArguments.emailRequest ) ); @@ -108,26 +97,6 @@ class CreateNewAndSendEmailInteractor { } } - Future?> _getStoredCurrentState({ - required Session session, - required AccountId accountId - }) async { - try { - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ]); - - final mailboxState = listState.first; - final emailState = listState.last; - - return dartz.Tuple2(mailboxState, emailState); - } catch (e) { - logError('CreateNewAndSendEmailInteractor::_getStoredCurrentState: Exception: $e'); - return null; - } - } - Future _deleteOldDraftsEmail({ required Session session, required AccountId accountId, diff --git a/lib/features/composer/domain/usecases/send_email_interactor.dart b/lib/features/composer/domain/usecases/send_email_interactor.dart index 83ade78ac..6052d1890 100644 --- a/lib/features/composer/domain/usecases/send_email_interactor.dart +++ b/lib/features/composer/domain/usecases/send_email_interactor.dart @@ -7,16 +7,12 @@ import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart' import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart'; import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_action_type.dart'; class SendEmailInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - SendEmailInteractor( - this._emailRepository, - this._mailboxRepository); + SendEmailInteractor(this._emailRepository); Stream> execute( Session session, @@ -30,14 +26,6 @@ class SendEmailInteractor { try { yield Right(SendEmailLoading()); - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - await _emailRepository.sendEmail( session, accountId, @@ -50,11 +38,7 @@ class SendEmailInteractor { } yield Right( - SendEmailSuccess( - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState, - emailRequest: emailRequest - ) + SendEmailSuccess(emailRequest: emailRequest) ); } catch (e) { yield Left(SendEmailFailure( diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index 9c563bce8..903399479 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -206,12 +206,10 @@ class ComposerBindings extends BaseBindings { Get.lazyPut(() => GetAlwaysReadReceiptSettingInteractor(Get.find())); Get.lazyPut(() => CreateNewAndSendEmailInteractor( Get.find(), - Get.find(), Get.find(), )); Get.lazyPut(() => CreateNewAndSaveEmailToDraftsInteractor( Get.find(), - Get.find(), Get.find(), )); Get.lazyPut(() => RestoreEmailInlineImagesInteractor( diff --git a/lib/features/email/domain/model/move_to_mailbox_request.dart b/lib/features/email/domain/model/move_to_mailbox_request.dart index e3b16422a..aa958d274 100644 --- a/lib/features/email/domain/model/move_to_mailbox_request.dart +++ b/lib/features/email/domain/model/move_to_mailbox_request.dart @@ -21,6 +21,10 @@ class MoveToMailboxRequest with EquatableMixin { this.destinationPath, }); + int get totalEmails => currentMailboxes + .values + .fold(0, (sum, element) => sum + element.length); + @override List get props => [ currentMailboxes, diff --git a/lib/features/email/domain/state/delete_email_permanently_state.dart b/lib/features/email/domain/state/delete_email_permanently_state.dart index 9cd56e1e6..22f2a0a6c 100644 --- a/lib/features/email/domain/state/delete_email_permanently_state.dart +++ b/lib/features/email/domain/state/delete_email_permanently_state.dart @@ -1,17 +1,9 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; class StartDeleteEmailPermanently extends UIState {} -class DeleteEmailPermanentlySuccess extends UIActionState { - - DeleteEmailPermanentlySuccess({ - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - }) : super(currentEmailState, currentMailboxState); -} +class DeleteEmailPermanentlySuccess extends UIState {} class DeleteEmailPermanentlyFailure extends FeatureFailure { diff --git a/lib/features/email/domain/state/delete_multiple_emails_permanently_state.dart b/lib/features/email/domain/state/delete_multiple_emails_permanently_state.dart index 33b9b8467..07ac090d6 100644 --- a/lib/features/email/domain/state/delete_multiple_emails_permanently_state.dart +++ b/lib/features/email/domain/state/delete_multiple_emails_permanently_state.dart @@ -1,41 +1,27 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; class LoadingDeleteMultipleEmailsPermanentlyAll extends UIState {} -class DeleteMultipleEmailsPermanentlyAllSuccess extends UIActionState { +class DeleteMultipleEmailsPermanentlyAllSuccess extends UIState { List emailIds; - DeleteMultipleEmailsPermanentlyAllSuccess( - this.emailIds, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + DeleteMultipleEmailsPermanentlyAllSuccess(this.emailIds); @override - List get props => [emailIds, ...super.props]; + List get props => [emailIds]; } -class DeleteMultipleEmailsPermanentlyHasSomeEmailFailure extends UIActionState { +class DeleteMultipleEmailsPermanentlyHasSomeEmailFailure extends UIState { List emailIds; - DeleteMultipleEmailsPermanentlyHasSomeEmailFailure( - this.emailIds, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + DeleteMultipleEmailsPermanentlyHasSomeEmailFailure(this.emailIds); @override - List get props => [emailIds, ...super.props]; + List get props => [emailIds]; } class DeleteMultipleEmailsPermanentlyAllFailure extends FeatureFailure {} diff --git a/lib/features/email/domain/state/mark_as_email_read_state.dart b/lib/features/email/domain/state/mark_as_email_read_state.dart index 2e7ddbd68..1c327f1da 100644 --- a/lib/features/email/domain/state/mark_as_email_read_state.dart +++ b/lib/features/email/domain/state/mark_as_email_read_state.dart @@ -1,12 +1,10 @@ import 'package:core/presentation/state/failure.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; +import 'package:core/presentation/state/success.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:model/email/read_actions.dart'; -import 'package:model/model.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart'; -class MarkAsEmailReadSuccess extends UIActionState { +class MarkAsEmailReadSuccess extends UIState { final EmailId emailId; final ReadActions readActions; final MarkReadAction markReadAction; @@ -15,14 +13,10 @@ class MarkAsEmailReadSuccess extends UIActionState { this.emailId, this.readActions, this.markReadAction, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + ); @override - List get props => [emailId, readActions, markReadAction, ...super.props]; + List get props => [emailId, readActions, markReadAction]; } class MarkAsEmailReadFailure extends FeatureFailure { diff --git a/lib/features/email/domain/state/mark_as_email_star_state.dart b/lib/features/email/domain/state/mark_as_email_star_state.dart index c9d639e72..3313c9525 100644 --- a/lib/features/email/domain/state/mark_as_email_star_state.dart +++ b/lib/features/email/domain/state/mark_as_email_star_state.dart @@ -1,21 +1,14 @@ import 'package:core/presentation/state/failure.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; +import 'package:core/presentation/state/success.dart'; import 'package:model/email/mark_star_action.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; -class MarkAsStarEmailSuccess extends UIActionState { +class MarkAsStarEmailSuccess extends UIState { final MarkStarAction markStarAction; - MarkAsStarEmailSuccess( - this.markStarAction, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + MarkAsStarEmailSuccess(this.markStarAction); @override - List get props => [markStarAction, ...super.props]; + List get props => [markStarAction]; } class MarkAsStarEmailFailure extends FeatureFailure { diff --git a/lib/features/email/domain/state/move_to_mailbox_state.dart b/lib/features/email/domain/state/move_to_mailbox_state.dart index 66e1359d4..56809a70d 100644 --- a/lib/features/email/domain/state/move_to_mailbox_state.dart +++ b/lib/features/email/domain/state/move_to_mailbox_state.dart @@ -1,15 +1,13 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/model.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; import 'package:tmail_ui_user/features/email/domain/model/move_action.dart'; class LoadingMoveToMailbox extends UIState {} -class MoveToMailboxSuccess extends UIActionState { +class MoveToMailboxSuccess extends UIState { final EmailId emailId; final MailboxId currentMailboxId; final MailboxId destinationMailboxId; @@ -25,10 +23,8 @@ class MoveToMailboxSuccess extends UIActionState { this.emailActionType, { this.destinationPath, - jmap.State? currentEmailState, - jmap.State? currentMailboxState, } - ) : super(currentEmailState, currentMailboxState); + ); @override List get props => [ @@ -38,7 +34,6 @@ class MoveToMailboxSuccess extends UIActionState { moveAction, emailActionType, destinationPath, - ...super.props ]; } diff --git a/lib/features/email/domain/state/restore_deleted_message_state.dart b/lib/features/email/domain/state/restore_deleted_message_state.dart index c946367aa..c72b51769 100644 --- a/lib/features/email/domain/state/restore_deleted_message_state.dart +++ b/lib/features/email/domain/state/restore_deleted_message_state.dart @@ -1,23 +1,16 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:email_recovery/email_recovery/email_recovery_action.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; class RestoreDeletedMessageLoading extends LoadingState {} -class RestoreDeletedMessageSuccess extends UIActionState { +class RestoreDeletedMessageSuccess extends UIState { final EmailRecoveryAction emailRecoveryAction; - RestoreDeletedMessageSuccess( - this.emailRecoveryAction, - { - jmap.State? currentMailboxState, - } - ) : super(null, currentMailboxState); + RestoreDeletedMessageSuccess(this.emailRecoveryAction); @override - List get props => [emailRecoveryAction, ...super.props]; + List get props => [emailRecoveryAction]; } class RestoreDeletedMessageFailure extends FeatureFailure { diff --git a/lib/features/email/domain/state/store_event_attendance_status_state.dart b/lib/features/email/domain/state/store_event_attendance_status_state.dart index 1325cf81b..835f41a65 100644 --- a/lib/features/email/domain/state/store_event_attendance_status_state.dart +++ b/lib/features/email/domain/state/store_event_attendance_status_state.dart @@ -1,27 +1,17 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; import 'package:tmail_ui_user/features/email/domain/model/event_action.dart'; class StoreEventAttendanceStatusLoading extends LoadingState {} -class StoreEventAttendanceStatusSuccess extends UIActionState { +class StoreEventAttendanceStatusSuccess extends UIState { final EventActionType eventActionType; - StoreEventAttendanceStatusSuccess( - this.eventActionType, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + StoreEventAttendanceStatusSuccess(this.eventActionType); @override - List get props => [ - eventActionType, - ...super.props]; + List get props => [eventActionType]; } class StoreEventAttendanceStatusFailure extends FeatureFailure { diff --git a/lib/features/email/domain/state/unsubscribe_email_state.dart b/lib/features/email/domain/state/unsubscribe_email_state.dart index 8ec09d478..362570f7a 100644 --- a/lib/features/email/domain/state/unsubscribe_email_state.dart +++ b/lib/features/email/domain/state/unsubscribe_email_state.dart @@ -1,18 +1,9 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; class UnsubscribeEmailLoading extends LoadingState {} -class UnsubscribeEmailSuccess extends UIActionState { - UnsubscribeEmailSuccess( - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); -} +class UnsubscribeEmailSuccess extends UIState {} class UnsubscribeEmailFailure extends FeatureFailure { diff --git a/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart b/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart index 35433b82c..20260256e 100644 --- a/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart +++ b/lib/features/email/domain/usecases/delete_email_permanently_interactor.dart @@ -1,35 +1,23 @@ -import 'package:core/core.dart'; +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/email/domain/repository/email_repository.dart'; import 'package:tmail_ui_user/features/email/domain/state/delete_email_permanently_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; class DeleteEmailPermanentlyInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - DeleteEmailPermanentlyInteractor(this._emailRepository, this._mailboxRepository); + DeleteEmailPermanentlyInteractor(this._emailRepository); Stream> execute(Session session, AccountId accountId, EmailId emailId) async* { try { yield Right(StartDeleteEmailPermanently()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final result = await _emailRepository.deleteEmailPermanently(session, accountId, emailId); if (result) { - yield Right(DeleteEmailPermanentlySuccess( - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + yield Right(DeleteEmailPermanentlySuccess()); } else { yield Left(DeleteEmailPermanentlyFailure(null)); } diff --git a/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart b/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart index 29befa5b1..685933fd5 100644 --- a/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart +++ b/lib/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart @@ -1,41 +1,25 @@ -import 'package:core/core.dart'; +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/email/domain/repository/email_repository.dart'; import 'package:tmail_ui_user/features/email/domain/state/delete_multiple_emails_permanently_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; class DeleteMultipleEmailsPermanentlyInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - DeleteMultipleEmailsPermanentlyInteractor(this._emailRepository, this._mailboxRepository); + DeleteMultipleEmailsPermanentlyInteractor(this._emailRepository); Stream> execute(Session session, AccountId accountId, List emailIds) async* { try { yield Right(LoadingDeleteMultipleEmailsPermanentlyAll()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final listResult = await _emailRepository.deleteMultipleEmailsPermanently(session, accountId, emailIds); if (listResult.length == emailIds.length) { - yield Right(DeleteMultipleEmailsPermanentlyAllSuccess( - listResult, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + yield Right(DeleteMultipleEmailsPermanentlyAllSuccess(listResult)); } else if (listResult.isNotEmpty) { - yield Right(DeleteMultipleEmailsPermanentlyHasSomeEmailFailure( - listResult, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + yield Right(DeleteMultipleEmailsPermanentlyHasSomeEmailFailure(listResult)); } else { yield Left(DeleteMultipleEmailsPermanentlyAllFailure()); } diff --git a/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart b/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart index 7fe15acbb..7db473e03 100644 --- a/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart +++ b/lib/features/email/domain/usecases/mark_as_email_read_interactor.dart @@ -8,13 +8,11 @@ import 'package:model/email/read_actions.dart'; import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart'; import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; class MarkAsEmailReadInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - MarkAsEmailReadInteractor(this._emailRepository, this._mailboxRepository); + MarkAsEmailReadInteractor(this._emailRepository); Stream> execute( Session session, @@ -24,14 +22,6 @@ class MarkAsEmailReadInteractor { MarkReadAction markReadAction, ) async* { try { - final listState = await Future.wait([ - _mailboxRepository.getMailboxState( session,accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final result = await _emailRepository.markAsRead( session, accountId, @@ -43,8 +33,6 @@ class MarkAsEmailReadInteractor { result.first, readAction, markReadAction, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState, )); } catch (e) { yield Left(MarkAsEmailReadFailure(readAction, exception: e)); diff --git a/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart b/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart index 6ca420eb7..aa8cc68c7 100644 --- a/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart +++ b/lib/features/email/domain/usecases/mark_as_star_email_interactor.dart @@ -20,17 +20,13 @@ class MarkAsStarEmailInteractor { MarkStarAction markStarAction, ) async* { try { - final currentEmailState = await emailRepository.getEmailState(session, accountId); await emailRepository.markAsStar( session, accountId, [emailId], markStarAction, ); - yield Right(MarkAsStarEmailSuccess( - markStarAction, - currentEmailState: currentEmailState, - )); + yield Right(MarkAsStarEmailSuccess(markStarAction)); } catch (e) { yield Left(MarkAsStarEmailFailure(markStarAction, exception: e)); } diff --git a/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart b/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart index 6c073dd74..eebdebd2e 100644 --- a/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart +++ b/lib/features/email/domain/usecases/move_to_mailbox_interactor.dart @@ -1,30 +1,20 @@ -import 'package:core/core.dart'; +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:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart'; import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; class MoveToMailboxInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - MoveToMailboxInteractor(this._emailRepository, this._mailboxRepository); + MoveToMailboxInteractor(this._emailRepository); Stream> execute(Session session, AccountId accountId, MoveToMailboxRequest moveRequest) async* { try { yield Right(LoadingMoveToMailbox()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final result = await _emailRepository.moveToMailbox(session, accountId, moveRequest); if (result.isNotEmpty) { yield Right(MoveToMailboxSuccess( @@ -34,8 +24,7 @@ class MoveToMailboxInteractor { moveRequest.moveAction, moveRequest.emailActionType, destinationPath: moveRequest.destinationPath, - currentMailboxState: currentMailboxState, - currentEmailState: currentEmailState)); + )); } else { yield Left(MoveToMailboxFailure(moveRequest.emailActionType)); } diff --git a/lib/features/email/domain/usecases/restore_deleted_message_interactor.dart b/lib/features/email/domain/usecases/restore_deleted_message_interactor.dart index 4a68bdd84..142d0bc7a 100644 --- a/lib/features/email/domain/usecases/restore_deleted_message_interactor.dart +++ b/lib/features/email/domain/usecases/restore_deleted_message_interactor.dart @@ -8,13 +8,11 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_message_request.dart'; import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; import 'package:tmail_ui_user/features/email/domain/state/restore_deleted_message_state.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; class RestoredDeletedMessageInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - RestoredDeletedMessageInteractor(this._emailRepository, this._mailboxRepository); + RestoredDeletedMessageInteractor(this._emailRepository); Stream> execute( Session session, @@ -23,9 +21,8 @@ class RestoredDeletedMessageInteractor { ) async* { try { yield Right(RestoreDeletedMessageLoading()); - final currentMailboxState = await _mailboxRepository.getMailboxState(session, accountId); final emailRecovery = await _emailRepository.restoreDeletedMessage(newRecoveryRequest); - yield Right(RestoreDeletedMessageSuccess(emailRecovery, currentMailboxState: currentMailboxState)); + yield Right(RestoreDeletedMessageSuccess(emailRecovery)); } catch (e) { yield Left(RestoreDeletedMessageFailure(e)); } diff --git a/lib/features/email/domain/usecases/store_event_attendance_status_interactor.dart b/lib/features/email/domain/usecases/store_event_attendance_status_interactor.dart index d524691aa..da3fd94a4 100644 --- a/lib/features/email/domain/usecases/store_event_attendance_status_interactor.dart +++ b/lib/features/email/domain/usecases/store_event_attendance_status_interactor.dart @@ -22,17 +22,13 @@ class StoreEventAttendanceStatusInteractor { try { yield Right(StoreEventAttendanceStatusLoading()); - final currentEmailState = await _emailRepository.getEmailState(session, accountId); - await _emailRepository.storeEventAttendanceStatus( session, accountId, emailId, eventActionType); - yield Right(StoreEventAttendanceStatusSuccess( - eventActionType, - currentEmailState: currentEmailState)); + yield Right(StoreEventAttendanceStatusSuccess(eventActionType)); } catch (e) { yield Left(StoreEventAttendanceStatusFailure(exception: e)); } diff --git a/lib/features/email/domain/usecases/unsubscribe_email_interactor.dart b/lib/features/email/domain/usecases/unsubscribe_email_interactor.dart index 4e1720b98..874022853 100644 --- a/lib/features/email/domain/usecases/unsubscribe_email_interactor.dart +++ b/lib/features/email/domain/usecases/unsubscribe_email_interactor.dart @@ -15,9 +15,8 @@ class UnsubscribeEmailInteractor { Stream> execute(Session session, AccountId accountId, EmailId emailId) async* { try { yield Right(UnsubscribeEmailLoading()); - final currentEmailState = await emailRepository.getEmailState(session, accountId); await emailRepository.unsubscribeMail(session, accountId, emailId); - yield Right(UnsubscribeEmailSuccess(currentEmailState: currentEmailState)); + yield Right(UnsubscribeEmailSuccess()); } catch (e) { yield Left(UnsubscribeEmailFailure(exception: e)); } diff --git a/lib/features/email/presentation/bindings/email_bindings.dart b/lib/features/email/presentation/bindings/email_bindings.dart index 576532f4f..071b20d0f 100644 --- a/lib/features/email/presentation/bindings/email_bindings.dart +++ b/lib/features/email/presentation/bindings/email_bindings.dart @@ -123,9 +123,7 @@ class EmailBindings extends BaseBindings { @override void bindingsInteractor() { Get.lazyPut(() => GetEmailContentInteractor(Get.find())); - Get.lazyPut(() => MarkAsEmailReadInteractor( - Get.find(), - Get.find())); + Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find())); Get.lazyPut(() => DownloadAttachmentsInteractor( Get.find(), Get.find(), @@ -139,9 +137,7 @@ class EmailBindings extends BaseBindings { Get.find(), Get.find(), )); - Get.lazyPut(() => MoveToMailboxInteractor( - Get.find(), - Get.find())); + Get.lazyPut(() => MoveToMailboxInteractor(Get.find())); Get.lazyPut(() => MarkAsStarEmailInteractor(Get.find())); Get.lazyPut(() => DownloadAttachmentForWebInteractor( Get.find(), diff --git a/lib/features/mailbox/domain/state/mark_as_mailbox_read_state.dart b/lib/features/mailbox/domain/state/mark_as_mailbox_read_state.dart index 6f16d3e4e..60a2df0c1 100644 --- a/lib/features/mailbox/domain/state/mark_as_mailbox_read_state.dart +++ b/lib/features/mailbox/domain/state/mark_as_mailbox_read_state.dart @@ -39,7 +39,7 @@ class MarkAsMailboxReadAllSuccess extends UIActionState { ]; } -class MarkAsMailboxReadHasSomeEmailFailure extends UIActionState { +class MarkAsMailboxReadHasSomeEmailFailure extends UIState { final String mailboxDisplayName; final int countEmailsRead; @@ -47,17 +47,12 @@ class MarkAsMailboxReadHasSomeEmailFailure extends UIActionState { MarkAsMailboxReadHasSomeEmailFailure( this.mailboxDisplayName, this.countEmailsRead, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentMailboxState, currentEmailState); + ); @override List get props => [ mailboxDisplayName, countEmailsRead, - ...super.props ]; } diff --git a/lib/features/mailbox/domain/state/move_mailbox_state.dart b/lib/features/mailbox/domain/state/move_mailbox_state.dart index 1b9a8a579..9720a77be 100644 --- a/lib/features/mailbox/domain/state/move_mailbox_state.dart +++ b/lib/features/mailbox/domain/state/move_mailbox_state.dart @@ -1,13 +1,11 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; import 'package:tmail_ui_user/features/email/domain/model/move_action.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; class LoadingMoveMailbox extends UIState {} -class MoveMailboxSuccess extends UIActionState { +class MoveMailboxSuccess extends UIState { final MailboxId mailboxIdSelected; final MoveAction moveAction; @@ -22,10 +20,8 @@ class MoveMailboxSuccess extends UIActionState { this.parentId, this.destinationMailboxId, this.destinationMailboxDisplayName, - jmap.State? currentEmailState, - jmap.State? currentMailboxState, } - ) : super(currentEmailState, currentMailboxState); + ); @override List get props => [ @@ -34,7 +30,6 @@ class MoveMailboxSuccess extends UIActionState { parentId, destinationMailboxId, destinationMailboxDisplayName, - ...super.props ]; } diff --git a/lib/features/mailbox/domain/state/rename_mailbox_state.dart b/lib/features/mailbox/domain/state/rename_mailbox_state.dart index 988f8760f..1861185bc 100644 --- a/lib/features/mailbox/domain/state/rename_mailbox_state.dart +++ b/lib/features/mailbox/domain/state/rename_mailbox_state.dart @@ -1,17 +1,9 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; class LoadingRenameMailbox extends UIState {} -class RenameMailboxSuccess extends UIActionState { - - RenameMailboxSuccess({ - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - }) : super(currentEmailState, currentMailboxState); -} +class RenameMailboxSuccess extends UIState {} class RenameMailboxFailure extends FeatureFailure { diff --git a/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart b/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart index bd892595a..074efdd51 100644 --- a/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart +++ b/lib/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart @@ -1,19 +1,18 @@ import 'dart:async'; -import 'package:core/core.dart'; +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/mailbox/mailbox.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'; import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart'; class MarkAsMailboxReadInteractor { final MailboxRepository _mailboxRepository; - final EmailRepository _emailRepository; - MarkAsMailboxReadInteractor(this._mailboxRepository, this._emailRepository); + MarkAsMailboxReadInteractor(this._mailboxRepository); Stream> execute( Session session, @@ -27,14 +26,6 @@ class MarkAsMailboxReadInteractor { yield Right(MarkAsMailboxReadLoading()); onProgressController.add(Right(MarkAsMailboxReadLoading())); - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final listEmails = await _mailboxRepository.markAsMailboxRead( session, accountId, @@ -43,16 +34,12 @@ class MarkAsMailboxReadInteractor { onProgressController); if (totalEmailUnread == listEmails.length) { - yield Right(MarkAsMailboxReadAllSuccess( - mailboxDisplayName, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + yield Right(MarkAsMailboxReadAllSuccess(mailboxDisplayName)); } else if (listEmails.isNotEmpty) { yield Right(MarkAsMailboxReadHasSomeEmailFailure( mailboxDisplayName, listEmails.length, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + )); } else { yield Left(MarkAsMailboxReadAllFailure(mailboxDisplayName: mailboxDisplayName)); } diff --git a/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart index acf3687af..23b8363d8 100644 --- a/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/move_mailbox_interactor.dart @@ -1,4 +1,5 @@ -import 'package:core/core.dart'; +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'; @@ -14,8 +15,6 @@ class MoveMailboxInteractor { Stream> execute(Session session, AccountId accountId, MoveMailboxRequest request) async* { try { yield Right(LoadingMoveMailbox()); - - final currentMailboxState = await _mailboxRepository.getMailboxState(session, accountId); final result = await _mailboxRepository.moveMailbox(session, accountId, request); if (result) { yield Right(MoveMailboxSuccess( @@ -24,7 +23,7 @@ class MoveMailboxInteractor { parentId: request.parentId, destinationMailboxId: request.destinationMailboxId, destinationMailboxDisplayName: request.destinationMailboxDisplayName, - currentMailboxState: currentMailboxState)); + )); } else { yield Left(MoveMailboxFailure(null)); } diff --git a/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart index 893967ec3..8e2ef950d 100644 --- a/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/rename_mailbox_interactor.dart @@ -1,4 +1,5 @@ -import 'package:core/core.dart'; +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'; @@ -15,17 +16,13 @@ class RenameMailboxInteractor { Stream> execute(Session session, AccountId accountId, RenameMailboxRequest request) async* { try { yield Right(LoadingRenameMailbox()); - - final currentMailboxState = await _mailboxRepository.getMailboxState(session, accountId); - log('RenameMailboxInteractor::execute:currentMailboxState: $currentMailboxState'); final result = await _mailboxRepository.renameMailbox(session, accountId, request); if (result) { - yield Right(RenameMailboxSuccess(currentMailboxState: currentMailboxState)); + yield Right(RenameMailboxSuccess()); } else { yield Left(RenameMailboxFailure(null)); } } catch (e) { - logError('RenameMailboxInteractor::execute(): error: $e'); final exception = SetMailboxNameException.detectMailboxNameException(e, request.mailboxId); yield Left(RenameMailboxFailure(exception)); } diff --git a/lib/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart b/lib/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart index 97bf45dde..5c79d586b 100644 --- a/lib/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart +++ b/lib/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart @@ -1,14 +1,7 @@ import 'package:core/presentation/state/failure.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; +import 'package:core/presentation/state/success.dart'; -class RemoveEmailDraftsSuccess extends UIActionState { - - RemoveEmailDraftsSuccess({ - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - }) : super(currentEmailState, currentMailboxState); -} +class RemoveEmailDraftsSuccess extends UIState {} class RemoveEmailDraftsFailure extends FeatureFailure { diff --git a/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart index 291ef7cd2..a832a29a1 100644 --- a/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart +++ b/lib/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart @@ -1,33 +1,22 @@ -import 'package:core/core.dart'; +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/email/domain/repository/email_repository.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart'; class RemoveEmailDraftsInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - RemoveEmailDraftsInteractor(this._emailRepository, this._mailboxRepository); + RemoveEmailDraftsInteractor(this._emailRepository); Stream> execute(Session session, AccountId accountId, EmailId emailId) async* { try { - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final result = await _emailRepository.removeEmailDrafts(session, accountId, emailId); if (result) { - yield Right(RemoveEmailDraftsSuccess( - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + yield Right(RemoveEmailDraftsSuccess()); } else { yield Left(RemoveEmailDraftsFailure(result)); } 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 22dc4b10b..57dbd600a 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -275,53 +275,30 @@ class MailboxDashBoardBindings extends BaseBindings { @override void bindingsInteractor() { - Get.lazyPut(() => RemoveEmailDraftsInteractor( - Get.find(), - Get.find())); - Get.lazyPut(() => MoveToMailboxInteractor( - Get.find(), - Get.find())); - Get.lazyPut(() => DeleteEmailPermanentlyInteractor( - Get.find(), - Get.find())); + Get.lazyPut(() => RemoveEmailDraftsInteractor(Get.find())); + Get.lazyPut(() => MoveToMailboxInteractor(Get.find())); + Get.lazyPut(() => DeleteEmailPermanentlyInteractor(Get.find())); Get.lazyPut(() => SaveRecentSearchInteractor(Get.find())); Get.lazyPut(() => GetAllRecentSearchLatestInteractor(Get.find())); Get.lazyPut(() => SearchEmailInteractor(Get.find())); Get.lazyPut(() => SearchMoreEmailInteractor(Get.find())); Get.lazyPut(() => RefreshChangesSearchEmailInteractor(Get.find())); Get.lazyPut(() => QuickSearchEmailInteractor(Get.find())); - Get.lazyPut(() => MarkAsMailboxReadInteractor( - Get.find(), - Get.find()) - ); + Get.lazyPut(() => MarkAsMailboxReadInteractor(Get.find())); Get.lazyPut(() => GetComposerCacheOnWebInteractor(Get.find())); Get.lazyPut(() => RemoveComposerCacheOnWebInteractor(Get.find())); - Get.lazyPut(() => MarkAsEmailReadInteractor( - Get.find(), - Get.find() - )); + Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find())); Get.lazyPut(() => MarkAsStarEmailInteractor(Get.find())); Get.lazyPut(() => MarkAsMultipleEmailReadInteractor( Get.find(), - Get.find() )); Get.lazyPut(() => MarkAsStarMultipleEmailInteractor(Get.find())); Get.lazyPut(() => MoveMultipleEmailToMailboxInteractor( Get.find(), - Get.find() - )); - Get.lazyPut(() => DeleteMultipleEmailsPermanentlyInteractor( - Get.find(), - Get.find())); - Get.lazyPut(() => EmptyTrashFolderInteractor( - Get.find(), - Get.find(), - Get.find())); - Get.lazyPut(() => EmptySpamFolderInteractor( - Get.find(), - Get.find(), - Get.find() )); + Get.lazyPut(() => DeleteMultipleEmailsPermanentlyInteractor(Get.find())); + Get.lazyPut(() => EmptyTrashFolderInteractor(Get.find())); + Get.lazyPut(() => EmptySpamFolderInteractor(Get.find())); Get.lazyPut(() => GetAppDashboardConfigurationInteractor( Get.find())); Get.lazyPut(() => GetEmailByIdInteractor( @@ -336,17 +313,11 @@ class MailboxDashBoardBindings extends BaseBindings { Get.lazyPut(() => GetSpamReportStateInteractor( Get.find())); Get.lazyPut(() => GetSpamMailboxCachedInteractor(Get.find())); - Get.lazyPut(() => SendEmailInteractor( - Get.find(), - Get.find(), - )); + Get.lazyPut(() => SendEmailInteractor(Get.find())); SendingQueueInteractorBindings().dependencies(); Get.lazyPut(() => StoreSessionInteractor(Get.find())); Get.lazyPut(() => UnsubscribeEmailInteractor(Get.find())); - Get.lazyPut(() => RestoredDeletedMessageInteractor( - Get.find(), - Get.find() - )); + Get.lazyPut(() => RestoredDeletedMessageInteractor(Get.find())); Get.lazyPut(() => GetRestoredDeletedMessageInterator( Get.find(), 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 d97e43b1a..604724c94 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -404,7 +404,6 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo } else if (success is UnsubscribeEmailSuccess) { _handleUnsubscribeMailSuccess(); } else if (success is RestoreDeletedMessageSuccess) { - dispatchMailboxUIAction(RefreshChangeMailboxAction(success.currentMailboxState)); _handleRestoreDeletedMessageSuccess(success.emailRecoveryAction.id!); } else if (success is GetRestoredDeletedMessageSuccess) { _handleGetRestoredDeletedMessageSuccess(success); diff --git a/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart b/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart index dc8e65f8f..f5983336b 100644 --- a/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart +++ b/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart @@ -96,9 +96,7 @@ class SendEmailInteractorBindings extends InteractorsBindings { @override void bindingsInteractor() { - Get.lazyPut(() => SendEmailInteractor( - Get.find(), - Get.find())); + Get.lazyPut(() => SendEmailInteractor(Get.find())); } @override diff --git a/lib/features/search/email/presentation/search_email_controller.dart b/lib/features/search/email/presentation/search_email_controller.dart index 2bed6ef89..ccd7b79f7 100644 --- a/lib/features/search/email/presentation/search_email_controller.dart +++ b/lib/features/search/email/presentation/search_email_controller.dart @@ -294,11 +294,6 @@ class SearchEmailController extends BaseController ? UnsignedInt(listResultSearch.length) : ThreadConstants.defaultLimit; - if (limit.value > ThreadConstants.maximumEmailQueryLimit && - resultSearchScrollController.hasClients) { - resultSearchScrollController.jumpTo(0); - } - _updateSimpleSearchFilter( beforeOption: const None(), positionOption: option(searchEmailFilter.value.sortOrderType.isScrollByPosition(), 0), diff --git a/lib/features/thread/domain/constants/thread_constants.dart b/lib/features/thread/domain/constants/thread_constants.dart index 9a5618b92..2e5791697 100644 --- a/lib/features/thread/domain/constants/thread_constants.dart +++ b/lib/features/thread/domain/constants/thread_constants.dart @@ -5,7 +5,6 @@ import 'package:model/email/email_property.dart'; class ThreadConstants { static const maxCountEmails = 20; - static const maximumEmailQueryLimit = 256; static final defaultLimit = UnsignedInt(maxCountEmails); static final propertiesDefault = Properties({ EmailProperty.id, diff --git a/lib/features/thread/domain/state/empty_spam_folder_state.dart b/lib/features/thread/domain/state/empty_spam_folder_state.dart index f0bfbad41..fedb07ae3 100644 --- a/lib/features/thread/domain/state/empty_spam_folder_state.dart +++ b/lib/features/thread/domain/state/empty_spam_folder_state.dart @@ -1,23 +1,17 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; class EmptySpamFolderLoading extends LoadingState {} -class EmptySpamFolderSuccess extends UIActionState { +class EmptySpamFolderSuccess extends UIState { final List emailIds; - EmptySpamFolderSuccess( - this.emailIds, { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - }) : super(currentEmailState, currentMailboxState); + EmptySpamFolderSuccess(this.emailIds); @override - List get props => [emailIds, ...super.props]; + List get props => [emailIds]; } class EmptySpamFolderFailure extends FeatureFailure { diff --git a/lib/features/thread/domain/state/empty_trash_folder_state.dart b/lib/features/thread/domain/state/empty_trash_folder_state.dart index 8f9c6b62f..577eb6d7c 100644 --- a/lib/features/thread/domain/state/empty_trash_folder_state.dart +++ b/lib/features/thread/domain/state/empty_trash_folder_state.dart @@ -1,23 +1,17 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; class EmptyTrashFolderLoading extends LoadingState {} -class EmptyTrashFolderSuccess extends UIActionState { +class EmptyTrashFolderSuccess extends UIState { final List emailIds; - EmptyTrashFolderSuccess( - this.emailIds, { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - }) : super(currentEmailState, currentMailboxState); + EmptyTrashFolderSuccess(this.emailIds); @override - List get props => [emailIds, ...super.props]; + List get props => [emailIds]; } class EmptyTrashFolderFailure extends FeatureFailure { diff --git a/lib/features/thread/domain/state/mark_as_multiple_email_read_state.dart b/lib/features/thread/domain/state/mark_as_multiple_email_read_state.dart index 1c67a8212..9134f49b2 100644 --- a/lib/features/thread/domain/state/mark_as_multiple_email_read_state.dart +++ b/lib/features/thread/domain/state/mark_as_multiple_email_read_state.dart @@ -1,26 +1,20 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:model/email/read_actions.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; class LoadingMarkAsMultipleEmailReadAll extends UIState {} -class MarkAsMultipleEmailReadAllSuccess extends UIActionState { +class MarkAsMultipleEmailReadAllSuccess extends UIState { final int countMarkAsReadSuccess; final ReadActions readActions; MarkAsMultipleEmailReadAllSuccess( this.countMarkAsReadSuccess, this.readActions, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + ); @override - List get props => [countMarkAsReadSuccess, readActions, ...super.props]; + List get props => [countMarkAsReadSuccess, readActions]; } class MarkAsMultipleEmailReadAllFailure extends FeatureFailure { @@ -32,21 +26,17 @@ class MarkAsMultipleEmailReadAllFailure extends FeatureFailure { List get props => [readActions]; } -class MarkAsMultipleEmailReadHasSomeEmailFailure extends UIActionState { +class MarkAsMultipleEmailReadHasSomeEmailFailure extends UIState { final int countMarkAsReadSuccess; final ReadActions readActions; MarkAsMultipleEmailReadHasSomeEmailFailure( this.countMarkAsReadSuccess, this.readActions, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + ); @override - List get props => [countMarkAsReadSuccess, readActions, ...super.props]; + List get props => [countMarkAsReadSuccess, readActions]; } class MarkAsMultipleEmailReadFailure extends FeatureFailure { diff --git a/lib/features/thread/domain/state/mark_as_star_multiple_email_state.dart b/lib/features/thread/domain/state/mark_as_star_multiple_email_state.dart index a284194f2..b41a89154 100644 --- a/lib/features/thread/domain/state/mark_as_star_multiple_email_state.dart +++ b/lib/features/thread/domain/state/mark_as_star_multiple_email_state.dart @@ -1,26 +1,20 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:model/email/mark_star_action.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; class LoadingMarkAsStarMultipleEmailAll extends UIState {} -class MarkAsStarMultipleEmailAllSuccess extends UIActionState { +class MarkAsStarMultipleEmailAllSuccess extends UIState { final int countMarkStarSuccess; final MarkStarAction markStarAction; MarkAsStarMultipleEmailAllSuccess( this.countMarkStarSuccess, this.markStarAction, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + ); @override - List get props => [countMarkStarSuccess, markStarAction, ...super.props]; + List get props => [countMarkStarSuccess, markStarAction]; } class MarkAsStarMultipleEmailAllFailure extends FeatureFailure { @@ -32,21 +26,17 @@ class MarkAsStarMultipleEmailAllFailure extends FeatureFailure { List get props => [markStarAction]; } -class MarkAsStarMultipleEmailHasSomeEmailFailure extends UIActionState { +class MarkAsStarMultipleEmailHasSomeEmailFailure extends UIState { final int countMarkStarSuccess; final MarkStarAction markStarAction; MarkAsStarMultipleEmailHasSomeEmailFailure( this.countMarkStarSuccess, this.markStarAction, - { - jmap.State? currentEmailState, - jmap.State? currentMailboxState, - } - ) : super(currentEmailState, currentMailboxState); + ); @override - List get props => [countMarkStarSuccess, markStarAction, ...super.props]; + List get props => [countMarkStarSuccess, markStarAction]; } class MarkAsStarMultipleEmailFailure extends FeatureFailure { diff --git a/lib/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart b/lib/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart index 283bdc464..b4f179a33 100644 --- a/lib/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart +++ b/lib/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart @@ -1,15 +1,13 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/email/email_action_type.dart'; -import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; import 'package:tmail_ui_user/features/email/domain/model/move_action.dart'; class LoadingMoveMultipleEmailToMailboxAll extends UIState {} -class MoveMultipleEmailToMailboxAllSuccess extends UIActionState { +class MoveMultipleEmailToMailboxAllSuccess extends UIState { final List movedListEmailId; final MailboxId currentMailboxId; final MailboxId destinationMailboxId; @@ -25,10 +23,8 @@ class MoveMultipleEmailToMailboxAllSuccess extends UIActionState { this.emailActionType, { this.destinationPath, - jmap.State? currentEmailState, - jmap.State? currentMailboxState, } - ) : super(currentEmailState, currentMailboxState); + ); @override List get props => [ @@ -38,7 +34,6 @@ class MoveMultipleEmailToMailboxAllSuccess extends UIActionState { moveAction, emailActionType, destinationPath, - ...super.props ]; } @@ -52,7 +47,7 @@ class MoveMultipleEmailToMailboxAllFailure extends FeatureFailure { List get props => [moveAction, emailActionType]; } -class MoveMultipleEmailToMailboxHasSomeEmailFailure extends UIActionState { +class MoveMultipleEmailToMailboxHasSomeEmailFailure extends UIState { final List movedListEmailId; final MailboxId currentMailboxId; final MailboxId destinationMailboxId; @@ -68,10 +63,8 @@ class MoveMultipleEmailToMailboxHasSomeEmailFailure extends UIActionState { this.emailActionType, { this.destinationPath, - jmap.State? currentEmailState, - jmap.State? currentMailboxState, } - ) : super(currentEmailState, currentMailboxState); + ); @override List get props => [ @@ -81,7 +74,6 @@ class MoveMultipleEmailToMailboxHasSomeEmailFailure extends UIActionState { moveAction, emailActionType, destinationPath, - ...super.props ]; } diff --git a/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart b/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart index 38e864a94..601998a4c 100644 --- a/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart +++ b/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart @@ -4,40 +4,19 @@ 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/mailbox/mailbox.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'; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'; import 'package:tmail_ui_user/features/thread/domain/state/empty_spam_folder_state.dart'; class EmptySpamFolderInteractor { final ThreadRepository threadRepository; - final MailboxRepository _mailboxRepository; - final EmailRepository _emailRepository; - EmptySpamFolderInteractor( - this.threadRepository, - this._mailboxRepository, - this._emailRepository - ); + EmptySpamFolderInteractor(this.threadRepository); Stream> execute(Session session, AccountId accountId, MailboxId spamMailboxId) async* { try { yield Right(EmptySpamFolderLoading()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final emailIdDeleted = await threadRepository.emptySpamFolder(session, accountId, spamMailboxId); - yield Right(EmptySpamFolderSuccess( - emailIdDeleted, - currentMailboxState: currentMailboxState, - currentEmailState: currentEmailState, - )); + yield Right(EmptySpamFolderSuccess(emailIdDeleted)); } catch (e) { yield Left(EmptySpamFolderFailure(e)); } diff --git a/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart b/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart index 4a22143ed..5a540c8b9 100644 --- a/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart +++ b/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart @@ -1,42 +1,22 @@ -import 'package:core/core.dart'; +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/mailbox/mailbox.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'; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'; import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart'; class EmptyTrashFolderInteractor { final ThreadRepository threadRepository; - final MailboxRepository _mailboxRepository; - final EmailRepository _emailRepository; - EmptyTrashFolderInteractor( - this.threadRepository, - this._mailboxRepository, - this._emailRepository - ); + EmptyTrashFolderInteractor(this.threadRepository); Stream> execute(Session session, AccountId accountId, MailboxId trashMailboxId) async* { try { yield Right(EmptyTrashFolderLoading()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final emailIdDeleted = await threadRepository.emptyTrashFolder(session, accountId, trashMailboxId); - yield Right(EmptyTrashFolderSuccess( - emailIdDeleted, - currentMailboxState: currentMailboxState, - currentEmailState: currentEmailState, - )); + yield Right(EmptyTrashFolderSuccess(emailIdDeleted,)); } catch (e) { yield Left(EmptyTrashFolderFailure(e)); } diff --git a/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart b/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart index 68cae7562..08779f964 100644 --- a/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart +++ b/lib/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart @@ -1,18 +1,17 @@ -import 'package:core/core.dart'; +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:model/model.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'; import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart'; class MarkAsMultipleEmailReadInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - MarkAsMultipleEmailReadInteractor(this._emailRepository, this._mailboxRepository); + MarkAsMultipleEmailReadInteractor(this._emailRepository); Stream> execute( Session session, @@ -23,14 +22,6 @@ class MarkAsMultipleEmailReadInteractor { try { yield Right(LoadingMarkAsMultipleEmailReadAll()); - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final result = await _emailRepository.markAsRead( session, accountId, @@ -42,16 +33,14 @@ class MarkAsMultipleEmailReadInteractor { yield Right(MarkAsMultipleEmailReadAllSuccess( result.length, readAction, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + )); } else if (result.isEmpty) { yield Left(MarkAsMultipleEmailReadAllFailure(readAction)); } else { yield Right(MarkAsMultipleEmailReadHasSomeEmailFailure( result.length, readAction, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + )); } } catch (e) { yield Left(MarkAsMultipleEmailReadFailure(readAction, e)); diff --git a/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart b/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart index 840056fc4..6f828426b 100644 --- a/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart +++ b/lib/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart @@ -22,22 +22,20 @@ class MarkAsStarMultipleEmailInteractor { try { yield Right(LoadingMarkAsStarMultipleEmailAll()); - final currentEmailState = await _emailRepository.getEmailState(session, accountId); - final result = await _emailRepository.markAsStar(session, accountId, emailIds, markStarAction); if (emailIds.length == result.length) { yield Right(MarkAsStarMultipleEmailAllSuccess( emailIds.length, markStarAction, - currentEmailState: currentEmailState)); + )); } else if (result.isEmpty) { yield Left(MarkAsStarMultipleEmailAllFailure(markStarAction)); } else { yield Right(MarkAsStarMultipleEmailHasSomeEmailFailure( result.length, markStarAction, - currentEmailState: currentEmailState)); + )); } } catch (e) { yield Left(MarkAsStarMultipleEmailFailure(markStarAction, e)); diff --git a/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart b/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart index 0069c1b9e..19bf07647 100644 --- a/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart +++ b/lib/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart @@ -1,19 +1,18 @@ import 'dart:async'; -import 'package:core/core.dart'; +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:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.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'; import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart'; class MoveMultipleEmailToMailboxInteractor { final EmailRepository _emailRepository; - final MailboxRepository _mailboxRepository; - MoveMultipleEmailToMailboxInteractor(this._emailRepository, this._mailboxRepository); + MoveMultipleEmailToMailboxInteractor(this._emailRepository); Stream> execute( Session session, @@ -22,20 +21,8 @@ class MoveMultipleEmailToMailboxInteractor { ) async* { try { yield Right(LoadingMoveMultipleEmailToMailboxAll()); - - final listState = await Future.wait([ - _mailboxRepository.getMailboxState(session, accountId), - _emailRepository.getEmailState(session, accountId), - ], eagerError: true); - - final currentMailboxState = listState.first; - final currentEmailState = listState.last; - final result = await _emailRepository.moveToMailbox(session, accountId, moveRequest); - int totalEmail = 0; - for (var element in moveRequest.currentMailboxes.values) { - totalEmail = totalEmail + element.length; - }if (totalEmail == result.length) { + if (moveRequest.totalEmails == result.length) { yield Right(MoveMultipleEmailToMailboxAllSuccess( result, moveRequest.currentMailboxes.keys.first, @@ -43,8 +30,7 @@ class MoveMultipleEmailToMailboxInteractor { moveRequest.moveAction, moveRequest.emailActionType, destinationPath: moveRequest.destinationPath, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + )); } else if (result.isEmpty) { yield Left(MoveMultipleEmailToMailboxAllFailure(moveRequest.moveAction, moveRequest.emailActionType)); } else { @@ -55,8 +41,7 @@ class MoveMultipleEmailToMailboxInteractor { moveRequest.moveAction, moveRequest.emailActionType, destinationPath: moveRequest.destinationPath, - currentEmailState: currentEmailState, - currentMailboxState: currentMailboxState)); + )); } } catch (e) { yield Left(MoveMultipleEmailToMailboxFailure(moveRequest.emailActionType, moveRequest.moveAction, e)); diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index f3d2fa672..278a37dca 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -559,10 +559,6 @@ class ThreadController extends BaseController with EmailActionController { Future _refreshChangeSearchEmail() async { log('ThreadController::_refreshChangeSearchEmail:'); - if (limitEmailFetched.value > ThreadConstants.maximumEmailQueryLimit && - listEmailController.hasClients) { - listEmailController.jumpTo(0); - } canSearchMore = false; searchController.updateFilterEmail( positionOption: option( diff --git a/test/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor_test.dart b/test/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor_test.dart index 0869982c1..1b0f1805c 100644 --- a/test/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor_test.dart +++ b/test/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor_test.dart @@ -8,7 +8,6 @@ import 'package:tmail_ui_user/features/composer/domain/repository/composer_repos 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/presentation/model/create_email_request.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'; import '../../../../fixtures/account_fixtures.dart'; import '../../../../fixtures/session_fixtures.dart'; @@ -16,22 +15,18 @@ import 'create_new_and_save_email_to_drafts_interactor_test.mocks.dart'; @GenerateNiceMocks([ MockSpec(), - MockSpec(), MockSpec(), ]) void main() { late MockEmailRepository emailRepository; - late MockMailboxRepository mailboxRepository; late MockComposerRepository composerRepository; late CreateNewAndSaveEmailToDraftsInteractor createNewAndSaveEmailToDraftsInteractor; setUp(() { emailRepository = MockEmailRepository(); - mailboxRepository = MockMailboxRepository(); composerRepository = MockComposerRepository(); createNewAndSaveEmailToDraftsInteractor = CreateNewAndSaveEmailToDraftsInteractor( emailRepository, - mailboxRepository, composerRepository); }); diff --git a/test/features/composer/domain/usecases/create_new_and_send_email_interactor_test.dart b/test/features/composer/domain/usecases/create_new_and_send_email_interactor_test.dart index 72027e6f4..f5bac5362 100644 --- a/test/features/composer/domain/usecases/create_new_and_send_email_interactor_test.dart +++ b/test/features/composer/domain/usecases/create_new_and_send_email_interactor_test.dart @@ -7,7 +7,6 @@ import 'package:tmail_ui_user/features/composer/domain/repository/composer_repos 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/features/email/domain/repository/email_repository.dart'; -import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; import '../../../../fixtures/account_fixtures.dart'; import '../../../../fixtures/session_fixtures.dart'; @@ -15,16 +14,13 @@ import 'create_new_and_send_email_interactor_test.mocks.dart'; @GenerateNiceMocks([ MockSpec(), - MockSpec(), MockSpec(), ]) void main() { final emailRepository = MockEmailRepository(); - final mailboxRepository = MockMailboxRepository(); final composerRepository = MockComposerRepository(); final createNewAndSendEmailInteractor = CreateNewAndSendEmailInteractor( emailRepository, - mailboxRepository, composerRepository); group('create new and send email interactor test:', () { test( diff --git a/test/features/email/domain/usecases/store_event_attendance_status_interactor_test.dart b/test/features/email/domain/usecases/store_event_attendance_status_interactor_test.dart index 3deda8c8c..096c62f91 100644 --- a/test/features/email/domain/usecases/store_event_attendance_status_interactor_test.dart +++ b/test/features/email/domain/usecases/store_event_attendance_status_interactor_test.dart @@ -1,6 +1,5 @@ import 'package:dartz/dartz.dart' hide State; import 'package:flutter_test/flutter_test.dart'; -import 'package:jmap_dart_client/jmap/core/state.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; @@ -34,13 +33,8 @@ void main() { const eventActionType = EventActionType.yes; test('SHOULD emit loading and success states when storeEventAttendanceStatus is successful', () async { - final currentEmailState = State('abc123'); final updatedEmail = Email(id: emailIdFixture); - when(mockEmailRepository.getEmailState( - sessionFixture, - accountIdFixture - )).thenAnswer((_) async => currentEmailState); when(mockEmailRepository.storeEventAttendanceStatus( sessionFixture, accountIdFixture, @@ -58,13 +52,10 @@ void main() { result, emitsInOrder([ Right(StoreEventAttendanceStatusLoading()), - Right(StoreEventAttendanceStatusSuccess( - eventActionType, - currentEmailState: currentEmailState)), + Right(StoreEventAttendanceStatusSuccess(eventActionType)), ]), ); - verify(mockEmailRepository.getEmailState(sessionFixture, accountIdFixture)).called(1); verify(mockEmailRepository.storeEventAttendanceStatus( sessionFixture, accountIdFixture, @@ -77,9 +68,11 @@ void main() { test('SHOULD emit loading and failure states when storeEventAttendanceStatus throws an exception', () async { final exception = Exception(); - when(mockEmailRepository.getEmailState( + when(mockEmailRepository.storeEventAttendanceStatus( sessionFixture, - accountIdFixture + accountIdFixture, + emailIdFixture, + eventActionType, )).thenThrow(exception); final result = storeEventAttendanceStatusInteractor.execute( @@ -95,12 +88,6 @@ void main() { Left(StoreEventAttendanceStatusFailure(exception: exception)), ]), ); - - verify(mockEmailRepository.getEmailState( - sessionFixture, - accountIdFixture - )).called(1); - verifyNoMoreInteractions(mockEmailRepository); }); }); } \ No newline at end of file