TF-1190 Handle SetError when send message

This commit is contained in:
dab246
2023-02-03 11:03:57 +07:00
committed by Dat Vu
parent 4e576c346b
commit f41baf5250
12 changed files with 154 additions and 40 deletions
@@ -1,4 +0,0 @@
class NotFoundOutboxMailboxException implements Exception {
NotFoundOutboxMailboxException();
}
@@ -0,0 +1,10 @@
import 'package:jmap_dart_client/jmap/core/error/set_error.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
class SetEmailMethodException implements Exception {
final Map<Id, SetError> mapErrors;
SetEmailMethodException(this.mapErrors);
}
@@ -26,5 +26,5 @@ class SendEmailFailure extends FeatureFailure {
SendEmailFailure(this.exception);
@override
List<Object> get props => [exception];
List<Object?> get props => [exception];
}
@@ -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:tmail_ui_user/features/composer/domain/model/email_request.dart';
@@ -6,14 +7,12 @@ import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.da
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:uuid/uuid.dart';
class SendEmailInteractor {
final EmailRepository _emailRepository;
final MailboxRepository _mailboxRepository;
final Uuid _uuid;
SendEmailInteractor(this._emailRepository, this._mailboxRepository, this._uuid);
SendEmailInteractor(this._emailRepository, this._mailboxRepository);
Stream<Either<Failure, Success>> execute(
AccountId accountId,
@@ -31,13 +30,21 @@ class SendEmailInteractor {
final currentMailboxState = listState.first;
final currentEmailState = listState.last;
final result = await _emailRepository.sendEmail(accountId, emailRequest, mailboxRequest: mailboxRequest);
final result = await _emailRepository.sendEmail(
accountId,
emailRequest,
mailboxRequest: mailboxRequest
);
if (result) {
yield Right<Failure, Success>(SendEmailSuccess(
yield Right<Failure, Success>(
SendEmailSuccess(
currentEmailState: currentEmailState,
currentMailboxState: currentMailboxState));
currentMailboxState: currentMailboxState
)
);
} else {
yield Left<Failure, Success>(SendEmailFailure(result));
yield Left<Failure, Success>(SendEmailFailure(null));
}
} catch (e) {
yield Left<Failure, Success>(SendEmailFailure(e));
@@ -51,7 +51,6 @@ import 'package:tmail_ui_user/features/upload/presentation/controller/upload_con
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
import 'package:uuid/uuid.dart';
import 'package:worker_manager/worker_manager.dart';
class ComposerBindings extends BaseBindings {
@@ -132,9 +131,9 @@ class ComposerBindings extends BaseBindings {
Get.lazyPut(() => LocalFilePickerInteractor());
Get.lazyPut(() => UploadAttachmentInteractor(Get.find<ComposerRepository>()));
Get.lazyPut(() => SendEmailInteractor(
Get.find<EmailRepository>(),
Get.find<MailboxRepository>(),
Get.find<Uuid>()));
Get.find<EmailRepository>(),
Get.find<MailboxRepository>()
));
Get.lazyPut(() => SaveEmailAsDraftsInteractor(
Get.find<EmailRepository>(),
Get.find<MailboxRepository>()));