TF-2520 Implement print email in email view
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/utils/file_utils.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.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/print_file_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_hive_cache_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource_impl/html_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource_impl/print_file_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/local/html_analyzer.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
|
||||
@@ -19,6 +20,7 @@ import 'package:tmail_ui_user/features/email/domain/usecases/get_stored_email_st
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/print_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/view_attachment_for_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/controller/email_supervisor_controller.dart';
|
||||
@@ -67,6 +69,7 @@ class EmailBindings extends BaseBindings {
|
||||
Get.find<GetAllIdentitiesInteractor>(),
|
||||
Get.find<StoreOpenedEmailInteractor>(),
|
||||
Get.find<ViewAttachmentForWebInteractor>(),
|
||||
Get.find<PrintEmailInteractor>()
|
||||
));
|
||||
}
|
||||
|
||||
@@ -76,6 +79,7 @@ class EmailBindings extends BaseBindings {
|
||||
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
||||
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
||||
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
||||
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -98,6 +102,11 @@ class EmailBindings extends BaseBindings {
|
||||
Get.find<IOSSharingManager>(),
|
||||
Get.find<CacheExceptionThrower>()
|
||||
));
|
||||
Get.lazyPut(() => PrintFileDataSourceImpl(
|
||||
Get.find<PrintUtils>(),
|
||||
Get.find<ImagePaths>(),
|
||||
Get.find<CacheExceptionThrower>()
|
||||
));
|
||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||
Get.find<NewEmailCacheManager>(),
|
||||
Get.find<OpenedEmailCacheManager>(),
|
||||
@@ -141,6 +150,7 @@ class EmailBindings extends BaseBindings {
|
||||
Get.lazyPut(() => ViewAttachmentForWebInteractor(
|
||||
Get.find<DownloadAttachmentForWebInteractor>()));
|
||||
Get.lazyPut(() => StoreOpenedEmailInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => PrintEmailInteractor(Get.find<EmailRepository>()));
|
||||
IdentityInteractorsBindings().dependencies();
|
||||
}
|
||||
|
||||
@@ -165,7 +175,8 @@ class EmailBindings extends BaseBindings {
|
||||
DataSourceType.hiveCache: Get.find<EmailHiveCacheDataSourceImpl>()
|
||||
},
|
||||
Get.find<HtmlDataSource>(),
|
||||
Get.find<StateDataSource>()
|
||||
Get.find<StateDataSource>(),
|
||||
Get.find<PrintFileDataSource>(),
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import 'package:tmail_ui_user/features/composer/presentation/extensions/email_ac
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/extensions/list_attachments_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/email_print.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||
@@ -54,6 +55,7 @@ import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/print_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/send_receipt_to_sender_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/view_attachment_for_web_interactor.dart';
|
||||
@@ -111,6 +113,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||
final StoreOpenedEmailInteractor _storeOpenedEmailInteractor;
|
||||
final ViewAttachmentForWebInteractor _viewAttachmentForWebInteractor;
|
||||
final PrintEmailInteractor _printEmailInteractor;
|
||||
|
||||
CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
|
||||
SendReceiptToSenderInteractor? _sendReceiptToSenderInteractor;
|
||||
@@ -148,6 +151,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
this._getAllIdentitiesInteractor,
|
||||
this._storeOpenedEmailInteractor,
|
||||
this._viewAttachmentForWebInteractor,
|
||||
this._printEmailInteractor,
|
||||
);
|
||||
|
||||
@override
|
||||
@@ -818,7 +822,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
mailboxDashBoardController.deleteDownloadTask(success.taskId);
|
||||
|
||||
_downloadManager.openDownloadedFileWeb(
|
||||
success.bytes,
|
||||
success.bytes,
|
||||
success.attachment.type?.mimeType);
|
||||
}
|
||||
|
||||
@@ -843,7 +847,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
}
|
||||
|
||||
void _updateAttachmentsViewState(
|
||||
Id? attachmentBlobId,
|
||||
Id? attachmentBlobId,
|
||||
Either<Failure, Success> viewState) {
|
||||
if (attachmentBlobId != null) {
|
||||
attachmentsViewState[attachmentBlobId] = viewState;
|
||||
@@ -1090,6 +1094,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
case EmailActionType.archiveMessage:
|
||||
archiveMessage(context, presentationEmail);
|
||||
break;
|
||||
case EmailActionType.printAll:
|
||||
_printEmail(context, presentationEmail);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1578,4 +1585,28 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
void archiveMessage(BuildContext context, PresentationEmail email) {
|
||||
mailboxDashBoardController.archiveMessage(context, email);
|
||||
}
|
||||
|
||||
void _printEmail(BuildContext context, PresentationEmail email) {
|
||||
if (email.id != _currentEmailLoaded?.emailCurrent?.id) {
|
||||
log('SingleEmailController::_printEmail: EMAIL ${email.id?.asString} NOT LOADED');
|
||||
}
|
||||
final emailPrint = EmailPrint(
|
||||
appName: AppLocalizations.of(context).app_name,
|
||||
userName: mailboxDashBoardController.userProfile.value?.email ?? '',
|
||||
emailInformation: email.toEmail(),
|
||||
attachments: _currentEmailLoaded?.attachments,
|
||||
emailContent: _currentEmailLoaded?.htmlContent ?? '',
|
||||
locale: Localizations.localeOf(context).toLanguageTag(),
|
||||
toPrefix: AppLocalizations.of(context).to_email_address_prefix,
|
||||
ccPrefix: AppLocalizations.of(context).cc_email_address_prefix,
|
||||
bccPrefix: AppLocalizations.of(context).bcc_email_address_prefix,
|
||||
replyToPrefix: AppLocalizations.of(context).replyToEmailAddressPrefix,
|
||||
titleAttachment: AppLocalizations.of(context).attachments.toLowerCase(),
|
||||
toAddress: email.to?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
ccAddress: email.cc?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
bccAddress: email.bcc?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
replyToAddress: email.replyTo?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
);
|
||||
consumeState(_printEmailInteractor.execute(emailPrint));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user