TF-3334 Skip getting stored state in interactor when performing actions with email and mailbox
This commit is contained in:
@@ -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<Object?> get props => [emailId, ...super.props];
|
||||
|
||||
@@ -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<Object?> get props => [
|
||||
...super.props,
|
||||
emailRequest,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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<Object?> get props => [emailId, ...super.props];
|
||||
|
||||
+2
-41
@@ -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<Failure, Success>(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<Failure, Success>(
|
||||
SaveEmailAsDraftsSuccess(
|
||||
emailDraftSaved.id!,
|
||||
currentMailboxState: listCurrentState?.value1,
|
||||
currentEmailState: listCurrentState?.value2
|
||||
)
|
||||
SaveEmailAsDraftsSuccess(emailDraftSaved.id!)
|
||||
);
|
||||
} else {
|
||||
yield dartz.Right<Failure, Success>(UpdatingEmailDrafts());
|
||||
@@ -73,11 +58,7 @@ class CreateNewAndSaveEmailToDraftsInteractor {
|
||||
);
|
||||
|
||||
yield dartz.Right<Failure, Success>(
|
||||
UpdateEmailDraftsSuccess(
|
||||
emailDraftSaved.id!,
|
||||
currentMailboxState: listCurrentState?.value1,
|
||||
currentEmailState: listCurrentState?.value2
|
||||
)
|
||||
UpdateEmailDraftsSuccess(emailDraftSaved.id!)
|
||||
);
|
||||
}
|
||||
} else {
|
||||
@@ -112,24 +93,4 @@ class CreateNewAndSaveEmailToDraftsInteractor {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Future<dartz.Tuple2<State?, State?>?> _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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<Failure, Success>(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<Failure, Success>(
|
||||
SendEmailSuccess(
|
||||
currentMailboxState: listCurrentState?.value1,
|
||||
currentEmailState: listCurrentState?.value2,
|
||||
emailRequest: sendingEmailArguments.emailRequest
|
||||
)
|
||||
);
|
||||
@@ -108,26 +97,6 @@ class CreateNewAndSendEmailInteractor {
|
||||
}
|
||||
}
|
||||
|
||||
Future<dartz.Tuple2<State?, State?>?> _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<void> _deleteOldDraftsEmail({
|
||||
required Session session,
|
||||
required AccountId accountId,
|
||||
|
||||
@@ -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<Either<Failure, Success>> execute(
|
||||
Session session,
|
||||
@@ -30,14 +26,6 @@ class SendEmailInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(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<Failure, Success>(
|
||||
SendEmailSuccess(
|
||||
currentEmailState: currentEmailState,
|
||||
currentMailboxState: currentMailboxState,
|
||||
emailRequest: emailRequest
|
||||
)
|
||||
SendEmailSuccess(emailRequest: emailRequest)
|
||||
);
|
||||
} catch (e) {
|
||||
yield Left<Failure, Success>(SendEmailFailure(
|
||||
|
||||
@@ -206,12 +206,10 @@ class ComposerBindings extends BaseBindings {
|
||||
Get.lazyPut(() => GetAlwaysReadReceiptSettingInteractor(Get.find<ServerSettingsRepository>()));
|
||||
Get.lazyPut(() => CreateNewAndSendEmailInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>(),
|
||||
Get.find<ComposerRepository>(),
|
||||
));
|
||||
Get.lazyPut(() => CreateNewAndSaveEmailToDraftsInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>(),
|
||||
Get.find<ComposerRepository>(),
|
||||
));
|
||||
Get.lazyPut(() => RestoreEmailInlineImagesInteractor(
|
||||
|
||||
Reference in New Issue
Block a user