TF-1594 Move SendEmailInteractor to MailboxDashboardController to handle async send email

(cherry picked from commit 63aec51a6ea6e827ea924e91a13ec78d7f48edf7)
This commit is contained in:
dab246
2023-03-15 15:06:59 +07:00
committed by Dat Vu
parent ee91963e53
commit fe05df3477
5 changed files with 54 additions and 42 deletions
@@ -15,7 +15,6 @@ import 'package:tmail_ui_user/features/composer/domain/usecases/download_image_a
import 'package:tmail_ui_user/features/composer/domain/usecases/save_email_as_drafts_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/update_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/upload_attachment_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_web_controller.dart';
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart';
@@ -135,10 +134,6 @@ class ComposerBindings extends BaseBindings {
void bindingsInteractor() {
Get.lazyPut(() => LocalFilePickerInteractor());
Get.lazyPut(() => UploadAttachmentInteractor(Get.find<ComposerRepository>()));
Get.lazyPut(() => SendEmailInteractor(
Get.find<EmailRepository>(),
Get.find<MailboxRepository>()
));
Get.lazyPut(() => SaveEmailAsDraftsInteractor(
Get.find<EmailRepository>(),
Get.find<MailboxRepository>()));
@@ -159,7 +154,6 @@ class ComposerBindings extends BaseBindings {
Get.lazyPut(() => UploadController(Get.find<UploadAttachmentInteractor>()));
Get.lazyPut(() => RichTextWebController());
Get.lazyPut(() => ComposerController(
Get.find<SendEmailInteractor>(),
Get.find<DeviceInfoPlugin>(),
Get.find<LocalFilePickerInteractor>(),
Get.find<SaveEmailAsDraftsInteractor>(),
@@ -39,7 +39,6 @@ import 'package:tmail_ui_user/features/composer/domain/usecases/download_image_a
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/save_email_as_drafts_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/update_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_web_controller.dart';
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart';
@@ -91,7 +90,6 @@ class ComposerController extends BaseController {
final emailContentsViewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
final hasRequestReadReceipt = false.obs;
final SendEmailInteractor _sendEmailInteractor;
final LocalFilePickerInteractor _localFilePickerInteractor;
final DeviceInfoPlugin _deviceInfoPlugin;
final SaveEmailAsDraftsInteractor _saveEmailAsDraftsInteractor;
@@ -190,7 +188,6 @@ class ComposerController extends BaseController {
}
ComposerController(
this._sendEmailInteractor,
this._deviceInfoPlugin,
this._localFilePickerInteractor,
this._saveEmailAsDraftsInteractor,
@@ -764,37 +761,31 @@ class ComposerController extends BaseController {
final outboxMailboxId = mailboxDashBoardController.outboxMailbox?.id;
final userProfile = mailboxDashBoardController.userProfile.value;
if (kIsWeb) {
closeComposerWeb();
} else {
popBack();
}
if (arguments != null && accountId != null && userProfile != null) {
final email = await _generateEmail(context, userProfile, outboxMailboxId: outboxMailboxId);
final submissionCreateId = Id(_uuid.v1());
mailboxDashBoardController.consumeState(
_sendEmailInteractor.execute(
accountId,
EmailRequest(
email,
submissionCreateId,
sentMailboxId: sentMailboxId,
identity: identitySelected.value,
emailIdDestroyed: arguments.emailActionType == EmailActionType.edit
? arguments.presentationEmail?.id
: null),
mailboxRequest: outboxMailboxId == null
? CreateNewMailboxRequest(
Id(_uuid.v1()),
PresentationMailbox.outboxMailboxName)
: null
)
final emailRequest = EmailRequest(
email,
submissionCreateId,
sentMailboxId: sentMailboxId,
identity: identitySelected.value,
emailIdDestroyed: arguments.emailActionType == EmailActionType.edit
? arguments.presentationEmail?.id
: null
);
final mailboxRequest = outboxMailboxId == null
? CreateNewMailboxRequest(Id(_uuid.v1()), PresentationMailbox.outboxMailboxName)
: null;
mailboxDashBoardController.handleSendEmailAction(accountId, emailRequest, mailboxRequest);
uploadController.clearInlineFileUploaded();
}
if (BuildUtils.isWeb) {
closeComposerWeb();
} else {
popBack();
}
}
void _checkContactPermission() async {