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, {
|
void showToastWithIcon(
|
||||||
String? message, String? icon, Color? bgColor, Color? iconColor,
|
BuildContext context, {
|
||||||
Color? textColor, double? radius, EdgeInsets? padding,
|
String? message,
|
||||||
TextStyle? textStyle, double? widthToast, Duration? toastLength,
|
String? icon,
|
||||||
Duration? delayTime}) async {
|
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;
|
double sizeWidth = context.width > 360 ? 360 : context.width - 40;
|
||||||
final toast = Material(
|
final toast = Material(
|
||||||
color: bgColor ?? Colors.white,
|
color: bgColor ?? Colors.white,
|
||||||
@@ -182,9 +190,6 @@ class AppToast {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
fToast.init(context);
|
fToast.init(context);
|
||||||
if (delayTime != null) {
|
|
||||||
await Future.delayed(delayTime);
|
|
||||||
}
|
|
||||||
fToast.showToast(
|
fToast.showToast(
|
||||||
child: toast,
|
child: toast,
|
||||||
gravity: ToastGravity.BOTTOM,
|
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/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/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/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/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_web_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_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() {
|
void bindingsInteractor() {
|
||||||
Get.lazyPut(() => LocalFilePickerInteractor());
|
Get.lazyPut(() => LocalFilePickerInteractor());
|
||||||
Get.lazyPut(() => UploadAttachmentInteractor(Get.find<ComposerRepository>()));
|
Get.lazyPut(() => UploadAttachmentInteractor(Get.find<ComposerRepository>()));
|
||||||
Get.lazyPut(() => SendEmailInteractor(
|
|
||||||
Get.find<EmailRepository>(),
|
|
||||||
Get.find<MailboxRepository>()
|
|
||||||
));
|
|
||||||
Get.lazyPut(() => SaveEmailAsDraftsInteractor(
|
Get.lazyPut(() => SaveEmailAsDraftsInteractor(
|
||||||
Get.find<EmailRepository>(),
|
Get.find<EmailRepository>(),
|
||||||
Get.find<MailboxRepository>()));
|
Get.find<MailboxRepository>()));
|
||||||
@@ -159,7 +154,6 @@ class ComposerBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => UploadController(Get.find<UploadAttachmentInteractor>()));
|
Get.lazyPut(() => UploadController(Get.find<UploadAttachmentInteractor>()));
|
||||||
Get.lazyPut(() => RichTextWebController());
|
Get.lazyPut(() => RichTextWebController());
|
||||||
Get.lazyPut(() => ComposerController(
|
Get.lazyPut(() => ComposerController(
|
||||||
Get.find<SendEmailInteractor>(),
|
|
||||||
Get.find<DeviceInfoPlugin>(),
|
Get.find<DeviceInfoPlugin>(),
|
||||||
Get.find<LocalFilePickerInteractor>(),
|
Get.find<LocalFilePickerInteractor>(),
|
||||||
Get.find<SaveEmailAsDraftsInteractor>(),
|
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_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/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/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/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_web_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/controller/rich_text_mobile_tablet_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 emailContentsViewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
|
||||||
final hasRequestReadReceipt = false.obs;
|
final hasRequestReadReceipt = false.obs;
|
||||||
|
|
||||||
final SendEmailInteractor _sendEmailInteractor;
|
|
||||||
final LocalFilePickerInteractor _localFilePickerInteractor;
|
final LocalFilePickerInteractor _localFilePickerInteractor;
|
||||||
final DeviceInfoPlugin _deviceInfoPlugin;
|
final DeviceInfoPlugin _deviceInfoPlugin;
|
||||||
final SaveEmailAsDraftsInteractor _saveEmailAsDraftsInteractor;
|
final SaveEmailAsDraftsInteractor _saveEmailAsDraftsInteractor;
|
||||||
@@ -190,7 +188,6 @@ class ComposerController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ComposerController(
|
ComposerController(
|
||||||
this._sendEmailInteractor,
|
|
||||||
this._deviceInfoPlugin,
|
this._deviceInfoPlugin,
|
||||||
this._localFilePickerInteractor,
|
this._localFilePickerInteractor,
|
||||||
this._saveEmailAsDraftsInteractor,
|
this._saveEmailAsDraftsInteractor,
|
||||||
@@ -764,37 +761,31 @@ class ComposerController extends BaseController {
|
|||||||
final outboxMailboxId = mailboxDashBoardController.outboxMailbox?.id;
|
final outboxMailboxId = mailboxDashBoardController.outboxMailbox?.id;
|
||||||
final userProfile = mailboxDashBoardController.userProfile.value;
|
final userProfile = mailboxDashBoardController.userProfile.value;
|
||||||
|
|
||||||
if (kIsWeb) {
|
|
||||||
closeComposerWeb();
|
|
||||||
} else {
|
|
||||||
popBack();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arguments != null && accountId != null && userProfile != null) {
|
if (arguments != null && accountId != null && userProfile != null) {
|
||||||
final email = await _generateEmail(context, userProfile, outboxMailboxId: outboxMailboxId);
|
final email = await _generateEmail(context, userProfile, outboxMailboxId: outboxMailboxId);
|
||||||
final submissionCreateId = Id(_uuid.v1());
|
final submissionCreateId = Id(_uuid.v1());
|
||||||
|
final emailRequest = EmailRequest(
|
||||||
mailboxDashBoardController.consumeState(
|
email,
|
||||||
_sendEmailInteractor.execute(
|
submissionCreateId,
|
||||||
accountId,
|
sentMailboxId: sentMailboxId,
|
||||||
EmailRequest(
|
identity: identitySelected.value,
|
||||||
email,
|
emailIdDestroyed: arguments.emailActionType == EmailActionType.edit
|
||||||
submissionCreateId,
|
? arguments.presentationEmail?.id
|
||||||
sentMailboxId: sentMailboxId,
|
: null
|
||||||
identity: identitySelected.value,
|
|
||||||
emailIdDestroyed: arguments.emailActionType == EmailActionType.edit
|
|
||||||
? arguments.presentationEmail?.id
|
|
||||||
: null),
|
|
||||||
mailboxRequest: outboxMailboxId == null
|
|
||||||
? CreateNewMailboxRequest(
|
|
||||||
Id(_uuid.v1()),
|
|
||||||
PresentationMailbox.outboxMailboxName)
|
|
||||||
: null
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
final mailboxRequest = outboxMailboxId == null
|
||||||
|
? CreateNewMailboxRequest(Id(_uuid.v1()), PresentationMailbox.outboxMailboxName)
|
||||||
|
: null;
|
||||||
|
|
||||||
|
mailboxDashBoardController.handleSendEmailAction(accountId, emailRequest, mailboxRequest);
|
||||||
uploadController.clearInlineFileUploaded();
|
uploadController.clearInlineFileUploaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (BuildUtils.isWeb) {
|
||||||
|
closeComposerWeb();
|
||||||
|
} else {
|
||||||
|
popBack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _checkContactPermission() async {
|
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/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/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/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/email_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/datasource/html_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';
|
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<EmptyTrashFolderInteractor>(),
|
||||||
Get.find<DeleteMultipleEmailsPermanentlyInteractor>(),
|
Get.find<DeleteMultipleEmailsPermanentlyInteractor>(),
|
||||||
Get.find<GetEmailByIdInteractor>(),
|
Get.find<GetEmailByIdInteractor>(),
|
||||||
|
Get.find<SendEmailInteractor>()
|
||||||
));
|
));
|
||||||
Get.put(AdvancedFilterController());
|
Get.put(AdvancedFilterController());
|
||||||
}
|
}
|
||||||
@@ -291,6 +293,10 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<SpamReportRepository>()));
|
Get.find<SpamReportRepository>()));
|
||||||
Get.lazyPut(() => GetSpamReportStateInteractor(
|
Get.lazyPut(() => GetSpamReportStateInteractor(
|
||||||
Get.find<SpamReportRepository>()));
|
Get.find<SpamReportRepository>()));
|
||||||
|
Get.lazyPut(() => SendEmailInteractor(
|
||||||
|
Get.find<EmailRepository>(),
|
||||||
|
Get.find<MailboxRepository>()
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@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/action/ui_action.dart';
|
||||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.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/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/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/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/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/composer_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.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';
|
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/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/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/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/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/domain/usecases/mark_as_mailbox_read_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.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 EmptyTrashFolderInteractor _emptyTrashFolderInteractor;
|
||||||
final DeleteMultipleEmailsPermanentlyInteractor _deleteMultipleEmailsPermanentlyInteractor;
|
final DeleteMultipleEmailsPermanentlyInteractor _deleteMultipleEmailsPermanentlyInteractor;
|
||||||
final GetEmailByIdInteractor _getEmailByIdInteractor;
|
final GetEmailByIdInteractor _getEmailByIdInteractor;
|
||||||
|
final SendEmailInteractor _sendEmailInteractor;
|
||||||
|
|
||||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||||
UpdateVacationInteractor? _updateVacationInteractor;
|
UpdateVacationInteractor? _updateVacationInteractor;
|
||||||
@@ -200,6 +204,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
this._emptyTrashFolderInteractor,
|
this._emptyTrashFolderInteractor,
|
||||||
this._deleteMultipleEmailsPermanentlyInteractor,
|
this._deleteMultipleEmailsPermanentlyInteractor,
|
||||||
this._getEmailByIdInteractor,
|
this._getEmailByIdInteractor,
|
||||||
|
this._sendEmailInteractor
|
||||||
) : super(
|
) : super(
|
||||||
getAuthenticatedAccountInteractor,
|
getAuthenticatedAccountInteractor,
|
||||||
updateAuthenticationAccountInteractor
|
updateAuthenticationAccountInteractor
|
||||||
@@ -261,7 +266,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
message: AppLocalizations.of(currentContext!).your_email_being_sent,
|
message: AppLocalizations.of(currentContext!).your_email_being_sent,
|
||||||
icon: _imagePaths.icSendToast,
|
icon: _imagePaths.icSendToast,
|
||||||
delayTime: const Duration(seconds: 1),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else if (success is GetEmailStateToRefreshSuccess) {
|
} else if (success is GetEmailStateToRefreshSuccess) {
|
||||||
@@ -1671,6 +1675,18 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
clearState();
|
clearState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handleSendEmailAction(
|
||||||
|
AccountId accountId,
|
||||||
|
EmailRequest emailRequest,
|
||||||
|
CreateNewMailboxRequest? mailboxRequest
|
||||||
|
) {
|
||||||
|
consumeState(_sendEmailInteractor.execute(
|
||||||
|
accountId,
|
||||||
|
emailRequest,
|
||||||
|
mailboxRequest: mailboxRequest
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
_emailReceiveManager.closeEmailReceiveManagerStream();
|
_emailReceiveManager.closeEmailReceiveManagerStream();
|
||||||
|
|||||||
Reference in New Issue
Block a user