TF-1594 Move SendEmailInteractor to MailboxDashboardController to handle async send email
(cherry picked from commit 63aec51a6ea6e827ea924e91a13ec78d7f48edf7)
This commit is contained in:
@@ -145,11 +145,19 @@ class AppToast {
|
||||
);
|
||||
}
|
||||
|
||||
void showToastWithIcon(BuildContext context, {
|
||||
String? message, String? icon, Color? bgColor, Color? iconColor,
|
||||
Color? textColor, double? radius, EdgeInsets? padding,
|
||||
TextStyle? textStyle, double? widthToast, Duration? toastLength,
|
||||
Duration? delayTime}) async {
|
||||
void showToastWithIcon(
|
||||
BuildContext context, {
|
||||
String? message,
|
||||
String? icon,
|
||||
Color? bgColor,
|
||||
Color? iconColor,
|
||||
Color? textColor,
|
||||
double? radius,
|
||||
EdgeInsets? padding,
|
||||
TextStyle? textStyle,
|
||||
double? widthToast,
|
||||
Duration? toastLength
|
||||
}) async {
|
||||
double sizeWidth = context.width > 360 ? 360 : context.width - 40;
|
||||
final toast = Material(
|
||||
color: bgColor ?? Colors.white,
|
||||
@@ -182,9 +190,6 @@ class AppToast {
|
||||
),
|
||||
);
|
||||
fToast.init(context);
|
||||
if (delayTime != null) {
|
||||
await Future.delayed(delayTime);
|
||||
}
|
||||
fToast.showToast(
|
||||
child: toast,
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:tmail_ui_user/features/caching/recent_search_cache_client.dart';
|
||||
import 'package:tmail_ui_user/features/caching/state_cache_client.dart';
|
||||
import 'package:tmail_ui_user/features/composer/data/repository/contact_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/repository/contact_repository.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource/html_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource_impl/email_datasource_impl.dart';
|
||||
@@ -157,6 +158,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<EmptyTrashFolderInteractor>(),
|
||||
Get.find<DeleteMultipleEmailsPermanentlyInteractor>(),
|
||||
Get.find<GetEmailByIdInteractor>(),
|
||||
Get.find<SendEmailInteractor>()
|
||||
));
|
||||
Get.put(AdvancedFilterController());
|
||||
}
|
||||
@@ -291,6 +293,10 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<SpamReportRepository>()));
|
||||
Get.lazyPut(() => GetSpamReportStateInteractor(
|
||||
Get.find<SpamReportRepository>()));
|
||||
Get.lazyPut(() => SendEmailInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>()
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
+17
-1
@@ -24,9 +24,11 @@ import 'package:rxdart/transformers.dart';
|
||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/exceptions/set_email_method_exception.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
@@ -45,6 +47,7 @@ import 'package:tmail_ui_user/features/email/presentation/model/composer_argumen
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
||||
@@ -134,6 +137,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
final EmptyTrashFolderInteractor _emptyTrashFolderInteractor;
|
||||
final DeleteMultipleEmailsPermanentlyInteractor _deleteMultipleEmailsPermanentlyInteractor;
|
||||
final GetEmailByIdInteractor _getEmailByIdInteractor;
|
||||
final SendEmailInteractor _sendEmailInteractor;
|
||||
|
||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||
UpdateVacationInteractor? _updateVacationInteractor;
|
||||
@@ -200,6 +204,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
this._emptyTrashFolderInteractor,
|
||||
this._deleteMultipleEmailsPermanentlyInteractor,
|
||||
this._getEmailByIdInteractor,
|
||||
this._sendEmailInteractor
|
||||
) : super(
|
||||
getAuthenticatedAccountInteractor,
|
||||
updateAuthenticationAccountInteractor
|
||||
@@ -261,7 +266,6 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
currentOverlayContext!,
|
||||
message: AppLocalizations.of(currentContext!).your_email_being_sent,
|
||||
icon: _imagePaths.icSendToast,
|
||||
delayTime: const Duration(seconds: 1),
|
||||
);
|
||||
}
|
||||
} else if (success is GetEmailStateToRefreshSuccess) {
|
||||
@@ -1670,6 +1674,18 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
|
||||
clearState();
|
||||
}
|
||||
|
||||
void handleSendEmailAction(
|
||||
AccountId accountId,
|
||||
EmailRequest emailRequest,
|
||||
CreateNewMailboxRequest? mailboxRequest
|
||||
) {
|
||||
consumeState(_sendEmailInteractor.execute(
|
||||
accountId,
|
||||
emailRequest,
|
||||
mailboxRequest: mailboxRequest
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
|
||||
Reference in New Issue
Block a user