TF-2520 Implement print email in email view
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
import 'package:core/data/network/dio_client.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/base/dom_transformer.dart';
|
||||||
|
import 'package:html/dom.dart';
|
||||||
|
|
||||||
|
class RemoveTagHiddenTransformer extends DomTransformer {
|
||||||
|
const RemoveTagHiddenTransformer();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> process({
|
||||||
|
required Document document,
|
||||||
|
required DioClient dioClient,
|
||||||
|
Map<String, String>? mapUrlDownloadCID,
|
||||||
|
}) async {
|
||||||
|
final elements = document.querySelectorAll('[style]');
|
||||||
|
await Future.wait(elements.map((element) async {
|
||||||
|
var exStyle = element.attributes['style'];
|
||||||
|
if (exStyle?.contains('display: none') == true || exStyle?.contains('display:none') == true) {
|
||||||
|
element.remove();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import 'package:core/presentation/utils/html_transformer/dom/blockquoted_transfo
|
|||||||
import 'package:core/presentation/utils/html_transformer/dom/image_transformers.dart';
|
import 'package:core/presentation/utils/html_transformer/dom/image_transformers.dart';
|
||||||
import 'package:core/presentation/utils/html_transformer/dom/remove_collapsed_signature_button_transformers.dart';
|
import 'package:core/presentation/utils/html_transformer/dom/remove_collapsed_signature_button_transformers.dart';
|
||||||
import 'package:core/presentation/utils/html_transformer/dom/remove_lazy_loading_for_background_image_transformers.dart';
|
import 'package:core/presentation/utils/html_transformer/dom/remove_lazy_loading_for_background_image_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/dom/remove_tag_hidden_transformers.dart';
|
||||||
import 'package:core/presentation/utils/html_transformer/dom/remove_tooltip_link_transformers.dart';
|
import 'package:core/presentation/utils/html_transformer/dom/remove_tooltip_link_transformers.dart';
|
||||||
import 'package:core/presentation/utils/html_transformer/dom/script_transformers.dart';
|
import 'package:core/presentation/utils/html_transformer/dom/script_transformers.dart';
|
||||||
import 'package:core/presentation/utils/html_transformer/dom/sigature_transformers.dart';
|
import 'package:core/presentation/utils/html_transformer/dom/sigature_transformers.dart';
|
||||||
@@ -61,6 +62,14 @@ class TransformConfiguration {
|
|||||||
|
|
||||||
factory TransformConfiguration.forPreviewEmail() => TransformConfiguration.standardConfiguration;
|
factory TransformConfiguration.forPreviewEmail() => TransformConfiguration.standardConfiguration;
|
||||||
|
|
||||||
|
factory TransformConfiguration.forPrintEmail() => TransformConfiguration.fromDomTransformers([
|
||||||
|
if (PlatformInfo.isWeb)
|
||||||
|
const RemoveTooltipLinkTransformer(),
|
||||||
|
const RemoveLazyLoadingForBackgroundImageTransformer(),
|
||||||
|
const RemoveCollapsedSignatureButtonTransformer(),
|
||||||
|
const RemoveTagHiddenTransformer(),
|
||||||
|
]);
|
||||||
|
|
||||||
/// Provides easy access to a standard configuration that does not block external images.
|
/// Provides easy access to a standard configuration that does not block external images.
|
||||||
static const TransformConfiguration standardConfiguration = TransformConfiguration(
|
static const TransformConfiguration standardConfiguration = TransformConfiguration(
|
||||||
standardDomTransformers,
|
standardDomTransformers,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
|
||||||
import 'package:device_info_plus/device_info_plus.dart';
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||||
@@ -20,9 +19,11 @@ import 'package:tmail_ui_user/features/composer/presentation/controller/rich_tex
|
|||||||
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/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/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_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/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/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/local/html_analyzer.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/network/email_api.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';
|
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
|
||||||
@@ -102,6 +103,11 @@ class ComposerBindings extends BaseBindings {
|
|||||||
Get.find<IOSSharingManager>(),
|
Get.find<IOSSharingManager>(),
|
||||||
Get.find<CacheExceptionThrower>()
|
Get.find<CacheExceptionThrower>()
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => PrintFileDataSourceImpl(
|
||||||
|
Get.find<PrintUtils>(),
|
||||||
|
Get.find<ImagePaths>(),
|
||||||
|
Get.find<CacheExceptionThrower>()
|
||||||
|
));
|
||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
@@ -122,6 +128,7 @@ class ComposerBindings extends BaseBindings {
|
|||||||
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
||||||
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
||||||
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
||||||
|
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -144,6 +151,7 @@ class ComposerBindings extends BaseBindings {
|
|||||||
},
|
},
|
||||||
Get.find<HtmlDataSource>(),
|
Get.find<HtmlDataSource>(),
|
||||||
Get.find<StateDataSource>(),
|
Get.find<StateDataSource>(),
|
||||||
|
Get.find<PrintFileDataSource>(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
import 'package:core/data/model/print_attachment.dart';
|
||||||
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
import 'package:core/utils/print_utils.dart';
|
||||||
|
import 'package:filesize/filesize.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:model/email/attachment.dart';
|
||||||
|
import 'package:model/extensions/utc_date_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/data/datasource/print_file_datasource.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/domain/model/email_print.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/presentation/extensions/attachment_extension.dart';
|
||||||
|
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
|
||||||
|
|
||||||
|
class PrintFileDataSourceImpl extends PrintFileDataSource {
|
||||||
|
|
||||||
|
final PrintUtils _printUtils;
|
||||||
|
final ImagePaths _imagePaths;
|
||||||
|
final ExceptionThrower _exceptionThrower;
|
||||||
|
|
||||||
|
PrintFileDataSourceImpl(
|
||||||
|
this._printUtils,
|
||||||
|
this._imagePaths,
|
||||||
|
this._exceptionThrower
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> printEmailToPDF(EmailPrint emailPrint) {
|
||||||
|
return Future.sync(() async {
|
||||||
|
final sender = emailPrint.emailInformation.from?.isNotEmpty == true
|
||||||
|
? emailPrint.emailInformation.from!.first
|
||||||
|
: null;
|
||||||
|
final receiveTime = emailPrint.emailInformation.receivedAt?.formatDateToLocal(
|
||||||
|
pattern: 'E, MMM d, yyyy \'at\' h:mm a',
|
||||||
|
locale: emailPrint.locale);
|
||||||
|
|
||||||
|
final List<PrintAttachment> listPrintAttachment = [];
|
||||||
|
|
||||||
|
if (emailPrint.attachments?.isNotEmpty == true) {
|
||||||
|
await Future.forEach<Attachment>(emailPrint.attachments ?? [], (attachment) async {
|
||||||
|
final iconSvg = await rootBundle.loadString(attachment.getIcon(_imagePaths));
|
||||||
|
final printAttachment = PrintAttachment(
|
||||||
|
iconSvg: iconSvg,
|
||||||
|
name: attachment.name ?? '',
|
||||||
|
size: filesize(attachment.size?.value)
|
||||||
|
);
|
||||||
|
listPrintAttachment.add(printAttachment);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
final result = await _printUtils.printEmailToPDF(
|
||||||
|
appName: emailPrint.appName,
|
||||||
|
userName: emailPrint.userName,
|
||||||
|
locale: emailPrint.locale,
|
||||||
|
title: emailPrint.emailInformation.subject ?? '',
|
||||||
|
emailContent: emailPrint.emailContent,
|
||||||
|
senderName: sender?.name ?? '',
|
||||||
|
senderEmailAddress: sender?.email ?? '',
|
||||||
|
dateTime: receiveTime ?? '',
|
||||||
|
toPrefix: emailPrint.toPrefix,
|
||||||
|
ccPrefix: emailPrint.ccPrefix,
|
||||||
|
bccPrefix: emailPrint.bccPrefix,
|
||||||
|
replyToPrefix: emailPrint.replyToPrefix,
|
||||||
|
toAddress: emailPrint.toAddress,
|
||||||
|
ccAddress: emailPrint.ccAddress,
|
||||||
|
bccAddress: emailPrint.bccAddress,
|
||||||
|
replyToAddress: emailPrint.replyToAddress,
|
||||||
|
titleAttachment: emailPrint.titleAttachment,
|
||||||
|
listAttachment: listPrintAttachment
|
||||||
|
);
|
||||||
|
log('PrintFileDataSourceImpl::printEmailToPDF: RESULT = $result');
|
||||||
|
return result;
|
||||||
|
}).catchError(_exceptionThrower.throwException);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,7 +23,9 @@ import 'package:model/email/read_actions.dart';
|
|||||||
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
import 'package:tmail_ui_user/features/composer/domain/model/email_request.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/print_file_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.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/move_to_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_message_request.dart';
|
import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_message_request.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||||
@@ -36,11 +38,13 @@ class EmailRepositoryImpl extends EmailRepository {
|
|||||||
final Map<DataSourceType, EmailDataSource> emailDataSource;
|
final Map<DataSourceType, EmailDataSource> emailDataSource;
|
||||||
final HtmlDataSource _htmlDataSource;
|
final HtmlDataSource _htmlDataSource;
|
||||||
final StateDataSource _stateDataSource;
|
final StateDataSource _stateDataSource;
|
||||||
|
final PrintFileDataSource _printFileDataSource;
|
||||||
|
|
||||||
EmailRepositoryImpl(
|
EmailRepositoryImpl(
|
||||||
this.emailDataSource,
|
this.emailDataSource,
|
||||||
this._htmlDataSource,
|
this._htmlDataSource,
|
||||||
this._stateDataSource
|
this._stateDataSource,
|
||||||
|
this._printFileDataSource,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -228,4 +232,9 @@ class EmailRepositoryImpl extends EmailRepository {
|
|||||||
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId) {
|
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId) {
|
||||||
return emailDataSource[DataSourceType.network]!.getRestoredDeletedMessage(emailRecoveryActionId);
|
return emailDataSource[DataSourceType.network]!.getRestoredDeletedMessage(emailRecoveryActionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> printEmail(EmailPrint emailPrint) {
|
||||||
|
return _printFileDataSource.printEmailToPDF(emailPrint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
|
||||||
|
class PrintEmailLoading extends LoadingState {}
|
||||||
|
|
||||||
|
class PrintEmailSuccess extends UIState {}
|
||||||
|
|
||||||
|
class PrintEmailFailure extends FeatureFailure {
|
||||||
|
|
||||||
|
PrintEmailFailure({dynamic exception}) : super(exception: exception);
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/transform_configuration.dart';
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/domain/model/email_print.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||||
|
import 'package:tmail_ui_user/features/email/domain/state/print_email_state.dart';
|
||||||
|
|
||||||
|
class PrintEmailInteractor {
|
||||||
|
final EmailRepository emailRepository;
|
||||||
|
|
||||||
|
PrintEmailInteractor(this.emailRepository);
|
||||||
|
|
||||||
|
Stream<Either<Failure, Success>> execute(EmailPrint emailPrint) async* {
|
||||||
|
try {
|
||||||
|
yield Right(PrintEmailLoading());
|
||||||
|
final htmlContentTransformed = await _transformHtmlEmailContent(emailPrint.emailContent);
|
||||||
|
final newEmailPrint = emailPrint.fromEmailContent(htmlContentTransformed);
|
||||||
|
await emailRepository.printEmail(newEmailPrint);
|
||||||
|
yield Right(PrintEmailSuccess());
|
||||||
|
} catch (e) {
|
||||||
|
yield Left(PrintEmailFailure(exception: e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> _transformHtmlEmailContent(String emailContent) async {
|
||||||
|
try {
|
||||||
|
final htmlContentTransformed = await emailRepository.transformHtmlEmailContent(
|
||||||
|
emailContent,
|
||||||
|
TransformConfiguration.forPrintEmail());
|
||||||
|
log('PrintEmailInteractor::_transformHtmlEmailContent: htmlContentTransformed: $htmlContentTransformed');
|
||||||
|
return htmlContentTransformed;
|
||||||
|
} catch (e) {
|
||||||
|
logError('PrintEmailInteractor::_transformHtmlEmailContent: Exception: $e');
|
||||||
|
return emailContent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,13 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.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/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/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_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/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/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/local/html_analyzer.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/network/email_api.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';
|
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_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/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/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/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/domain/usecases/view_attachment_for_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/controller/email_supervisor_controller.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<GetAllIdentitiesInteractor>(),
|
||||||
Get.find<StoreOpenedEmailInteractor>(),
|
Get.find<StoreOpenedEmailInteractor>(),
|
||||||
Get.find<ViewAttachmentForWebInteractor>(),
|
Get.find<ViewAttachmentForWebInteractor>(),
|
||||||
|
Get.find<PrintEmailInteractor>()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,6 +79,7 @@ class EmailBindings extends BaseBindings {
|
|||||||
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
||||||
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
||||||
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
||||||
|
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -98,6 +102,11 @@ class EmailBindings extends BaseBindings {
|
|||||||
Get.find<IOSSharingManager>(),
|
Get.find<IOSSharingManager>(),
|
||||||
Get.find<CacheExceptionThrower>()
|
Get.find<CacheExceptionThrower>()
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => PrintFileDataSourceImpl(
|
||||||
|
Get.find<PrintUtils>(),
|
||||||
|
Get.find<ImagePaths>(),
|
||||||
|
Get.find<CacheExceptionThrower>()
|
||||||
|
));
|
||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
@@ -141,6 +150,7 @@ class EmailBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => ViewAttachmentForWebInteractor(
|
Get.lazyPut(() => ViewAttachmentForWebInteractor(
|
||||||
Get.find<DownloadAttachmentForWebInteractor>()));
|
Get.find<DownloadAttachmentForWebInteractor>()));
|
||||||
Get.lazyPut(() => StoreOpenedEmailInteractor(Get.find<EmailRepository>()));
|
Get.lazyPut(() => StoreOpenedEmailInteractor(Get.find<EmailRepository>()));
|
||||||
|
Get.lazyPut(() => PrintEmailInteractor(Get.find<EmailRepository>()));
|
||||||
IdentityInteractorsBindings().dependencies();
|
IdentityInteractorsBindings().dependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +175,8 @@ class EmailBindings extends BaseBindings {
|
|||||||
DataSourceType.hiveCache: Get.find<EmailHiveCacheDataSourceImpl>()
|
DataSourceType.hiveCache: Get.find<EmailHiveCacheDataSourceImpl>()
|
||||||
},
|
},
|
||||||
Get.find<HtmlDataSource>(),
|
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/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/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/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/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/mark_read_action.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/model/move_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/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/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/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/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/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/domain/usecases/view_attachment_for_web_interactor.dart';
|
||||||
@@ -111,6 +113,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||||
final StoreOpenedEmailInteractor _storeOpenedEmailInteractor;
|
final StoreOpenedEmailInteractor _storeOpenedEmailInteractor;
|
||||||
final ViewAttachmentForWebInteractor _viewAttachmentForWebInteractor;
|
final ViewAttachmentForWebInteractor _viewAttachmentForWebInteractor;
|
||||||
|
final PrintEmailInteractor _printEmailInteractor;
|
||||||
|
|
||||||
CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
|
CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
|
||||||
SendReceiptToSenderInteractor? _sendReceiptToSenderInteractor;
|
SendReceiptToSenderInteractor? _sendReceiptToSenderInteractor;
|
||||||
@@ -148,6 +151,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
this._getAllIdentitiesInteractor,
|
this._getAllIdentitiesInteractor,
|
||||||
this._storeOpenedEmailInteractor,
|
this._storeOpenedEmailInteractor,
|
||||||
this._viewAttachmentForWebInteractor,
|
this._viewAttachmentForWebInteractor,
|
||||||
|
this._printEmailInteractor,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -818,7 +822,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
mailboxDashBoardController.deleteDownloadTask(success.taskId);
|
mailboxDashBoardController.deleteDownloadTask(success.taskId);
|
||||||
|
|
||||||
_downloadManager.openDownloadedFileWeb(
|
_downloadManager.openDownloadedFileWeb(
|
||||||
success.bytes,
|
success.bytes,
|
||||||
success.attachment.type?.mimeType);
|
success.attachment.type?.mimeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -843,7 +847,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _updateAttachmentsViewState(
|
void _updateAttachmentsViewState(
|
||||||
Id? attachmentBlobId,
|
Id? attachmentBlobId,
|
||||||
Either<Failure, Success> viewState) {
|
Either<Failure, Success> viewState) {
|
||||||
if (attachmentBlobId != null) {
|
if (attachmentBlobId != null) {
|
||||||
attachmentsViewState[attachmentBlobId] = viewState;
|
attachmentsViewState[attachmentBlobId] = viewState;
|
||||||
@@ -1090,6 +1094,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
case EmailActionType.archiveMessage:
|
case EmailActionType.archiveMessage:
|
||||||
archiveMessage(context, presentationEmail);
|
archiveMessage(context, presentationEmail);
|
||||||
break;
|
break;
|
||||||
|
case EmailActionType.printAll:
|
||||||
|
_printEmail(context, presentationEmail);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1578,4 +1585,28 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
void archiveMessage(BuildContext context, PresentationEmail email) {
|
void archiveMessage(BuildContext context, PresentationEmail email) {
|
||||||
mailboxDashBoardController.archiveMessage(context, 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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
import 'package:core/data/model/source_type/data_source_type.dart';
|
import 'package:core/data/model/source_type/data_source_type.dart';
|
||||||
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/utils/config/app_config_loader.dart';
|
import 'package:core/utils/config/app_config_loader.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
import 'package:core/utils/file_utils.dart';
|
||||||
|
import 'package:core/utils/print_utils.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/clients/recent_search_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/clients/recent_search_cache_client.dart';
|
||||||
@@ -11,9 +13,11 @@ import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_inter
|
|||||||
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/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/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_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/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/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/local/html_analyzer.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/network/email_api.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';
|
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
|
||||||
@@ -178,6 +182,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.lazyPut<SearchDataSource>(() => Get.find<SearchDataSourceImpl>());
|
Get.lazyPut<SearchDataSource>(() => Get.find<SearchDataSourceImpl>());
|
||||||
Get.lazyPut<ThreadDataSource>(() => Get.find<ThreadDataSourceImpl>());
|
Get.lazyPut<ThreadDataSource>(() => Get.find<ThreadDataSourceImpl>());
|
||||||
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
||||||
|
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
|
||||||
Get.lazyPut<MailboxDataSource>(() => Get.find<MailboxDataSourceImpl>());
|
Get.lazyPut<MailboxDataSource>(() => Get.find<MailboxDataSourceImpl>());
|
||||||
Get.lazyPut<SessionStorageComposerDatasource>(() => Get.find<SessionStorageComposerDatasourceImpl>());
|
Get.lazyPut<SessionStorageComposerDatasource>(() => Get.find<SessionStorageComposerDatasourceImpl>());
|
||||||
Get.lazyPut<SpamReportDataSource>(() => Get.find<SpamReportDataSourceImpl>());
|
Get.lazyPut<SpamReportDataSource>(() => Get.find<SpamReportDataSourceImpl>());
|
||||||
@@ -206,6 +211,11 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<IOSSharingManager>(),
|
Get.find<IOSSharingManager>(),
|
||||||
Get.find<CacheExceptionThrower>()
|
Get.find<CacheExceptionThrower>()
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => PrintFileDataSourceImpl(
|
||||||
|
Get.find<PrintUtils>(),
|
||||||
|
Get.find<ImagePaths>(),
|
||||||
|
Get.find<CacheExceptionThrower>()
|
||||||
|
));
|
||||||
Get.lazyPut(() => MailboxDataSourceImpl(
|
Get.lazyPut(() => MailboxDataSourceImpl(
|
||||||
Get.find<MailboxAPI>(),
|
Get.find<MailboxAPI>(),
|
||||||
Get.find<MailboxIsolateWorker>(),
|
Get.find<MailboxIsolateWorker>(),
|
||||||
@@ -346,6 +356,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
},
|
},
|
||||||
Get.find<HtmlDataSource>(),
|
Get.find<HtmlDataSource>(),
|
||||||
Get.find<StateDataSource>(),
|
Get.find<StateDataSource>(),
|
||||||
|
Get.find<PrintFileDataSource>(),
|
||||||
));
|
));
|
||||||
Get.lazyPut(() => SearchRepositoryImpl(Get.find<SearchDataSource>()));
|
Get.lazyPut(() => SearchRepositoryImpl(Get.find<SearchDataSource>()));
|
||||||
Get.lazyPut(() => ThreadRepositoryImpl(
|
Get.lazyPut(() => ThreadRepositoryImpl(
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
import 'package:core/data/model/source_type/data_source_type.dart';
|
import 'package:core/data/model/source_type/data_source_type.dart';
|
||||||
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
import 'package:core/utils/file_utils.dart';
|
||||||
|
import 'package:core/utils/print_utils.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.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/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_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/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/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/local/html_analyzer.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/network/email_api.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';
|
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
|
||||||
@@ -41,6 +45,7 @@ class SendEmailInteractorBindings extends InteractorsBindings {
|
|||||||
Get.lazyPut<MailboxDataSource>(() => Get.find<MailboxDataSourceImpl>());
|
Get.lazyPut<MailboxDataSource>(() => Get.find<MailboxDataSourceImpl>());
|
||||||
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
||||||
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
||||||
|
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -62,6 +67,11 @@ class SendEmailInteractorBindings extends InteractorsBindings {
|
|||||||
Get.find<StateCacheManager>(),
|
Get.find<StateCacheManager>(),
|
||||||
Get.find<IOSSharingManager>(),
|
Get.find<IOSSharingManager>(),
|
||||||
Get.find<CacheExceptionThrower>()));
|
Get.find<CacheExceptionThrower>()));
|
||||||
|
Get.lazyPut(() => PrintFileDataSourceImpl(
|
||||||
|
Get.find<PrintUtils>(),
|
||||||
|
Get.find<ImagePaths>(),
|
||||||
|
Get.find<CacheExceptionThrower>(),
|
||||||
|
));
|
||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
@@ -93,6 +103,7 @@ class SendEmailInteractorBindings extends InteractorsBindings {
|
|||||||
},
|
},
|
||||||
Get.find<HtmlDataSource>(),
|
Get.find<HtmlDataSource>(),
|
||||||
Get.find<StateDataSource>(),
|
Get.find<StateDataSource>(),
|
||||||
|
Get.find<PrintFileDataSource>(),
|
||||||
));
|
));
|
||||||
Get.lazyPut(() => MailboxRepositoryImpl(
|
Get.lazyPut(() => MailboxRepositoryImpl(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
import 'package:core/data/model/source_type/data_source_type.dart';
|
import 'package:core/data/model/source_type/data_source_type.dart';
|
||||||
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
import 'package:core/utils/file_utils.dart';
|
||||||
|
import 'package:core/utils/print_utils.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
import 'package:tmail_ui_user/features/base/interactors_bindings.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/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_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/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/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/local/html_analyzer.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/network/email_api.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';
|
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
|
||||||
@@ -71,6 +75,7 @@ class FcmInteractorBindings extends InteractorsBindings {
|
|||||||
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
||||||
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
||||||
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
|
||||||
|
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -106,6 +111,11 @@ class FcmInteractorBindings extends InteractorsBindings {
|
|||||||
Get.find<IOSSharingManager>(),
|
Get.find<IOSSharingManager>(),
|
||||||
Get.find<CacheExceptionThrower>()
|
Get.find<CacheExceptionThrower>()
|
||||||
));
|
));
|
||||||
|
Get.lazyPut(() => PrintFileDataSourceImpl(
|
||||||
|
Get.find<PrintUtils>(),
|
||||||
|
Get.find<ImagePaths>(),
|
||||||
|
Get.find<CacheExceptionThrower>()
|
||||||
|
));
|
||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
@@ -171,6 +181,7 @@ class FcmInteractorBindings extends InteractorsBindings {
|
|||||||
DataSourceType.hiveCache: Get.find<EmailHiveCacheDataSourceImpl>()
|
DataSourceType.hiveCache: Get.find<EmailHiveCacheDataSourceImpl>()
|
||||||
},
|
},
|
||||||
Get.find<HtmlDataSource>(),
|
Get.find<HtmlDataSource>(),
|
||||||
Get.find<StateDataSource>()));
|
Get.find<StateDataSource>(),
|
||||||
|
Get.find<PrintFileDataSource>()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"@@last_modified": "2024-02-28T08:48:33.734928",
|
"@@last_modified": "2024-02-28T17:05:44.385016",
|
||||||
"initializing_data": "Initializing data...",
|
"initializing_data": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
@@ -3659,5 +3659,11 @@
|
|||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"replyToEmailAddressPrefix": "Reply-To",
|
||||||
|
"@replyToEmailAddressPrefix": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,9 +6,11 @@ import 'package:core/presentation/utils/responsive_utils.dart';
|
|||||||
import 'package:core/utils/config/app_config_loader.dart';
|
import 'package:core/utils/config/app_config_loader.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
import 'package:core/utils/file_utils.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
|
import 'package:core/utils/print_utils.dart';
|
||||||
import 'package:device_info_plus/device_info_plus.dart';
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:htmltopdfwidgets/htmltopdfwidgets.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:tmail_ui_user/features/sending_queue/presentation/utils/sending_queue_isolate_manager.dart';
|
import 'package:tmail_ui_user/features/sending_queue/presentation/utils/sending_queue_isolate_manager.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
@@ -60,6 +62,8 @@ class CoreBindings extends Bindings {
|
|||||||
Get.put(CompressFileUtils());
|
Get.put(CompressFileUtils());
|
||||||
Get.put(AppConfigLoader());
|
Get.put(AppConfigLoader());
|
||||||
Get.put(FileUtils());
|
Get.put(FileUtils());
|
||||||
|
Get.put(HTMLToPdf());
|
||||||
|
Get.put(PrintUtils(Get.find<HTMLToPdf>(), Get.find<ImagePaths>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _bindingIsolate() {
|
void _bindingIsolate() {
|
||||||
|
|||||||
@@ -3812,4 +3812,11 @@ class AppLocalizations {
|
|||||||
'Print all',
|
'Print all',
|
||||||
name: 'printAll');
|
name: 'printAll');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String get replyToEmailAddressPrefix {
|
||||||
|
return Intl.message(
|
||||||
|
'Reply-To',
|
||||||
|
name: 'replyToEmailAddressPrefix',
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -57,6 +57,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.0"
|
version: "7.0.0"
|
||||||
|
barcode:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: barcode
|
||||||
|
sha256: "91b143666f7bb13636f716b6d4e412e372ab15ff7969799af8c9e30a382e9385"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.6"
|
||||||
better_open_file:
|
better_open_file:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -65,6 +73,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.6.4"
|
version: "3.6.4"
|
||||||
|
bidi:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: bidi
|
||||||
|
sha256: "1a7d0c696324b2089f72e7671fd1f1f64fef44c980f3cebc84e803967c597b63"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.10"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1030,6 +1046,14 @@ packages:
|
|||||||
url: "https://github.com/linagora/html-editor-enhanced.git"
|
url: "https://github.com/linagora/html-editor-enhanced.git"
|
||||||
source: git
|
source: git
|
||||||
version: "2.5.1"
|
version: "2.5.1"
|
||||||
|
htmltopdfwidgets:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: htmltopdfwidgets
|
||||||
|
sha256: "990e3002fbbfaf307555f1991bed61b6228d7053b7e1945815c7a68f56bbda81"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.3"
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1334,6 +1358,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0"
|
version: "3.0.0"
|
||||||
|
pdf:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pdf
|
||||||
|
sha256: "243f05342fc0bdf140eba5b069398985cdbdd3dbb1d776cf43d5ea29cc570ba6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.10.8"
|
||||||
|
pdf_widget_wrapper:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pdf_widget_wrapper
|
||||||
|
sha256: e9d31fd7782ce28ae346b127ea7d1cd748d799bddee379f31191693610e23749
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
percent_indicator:
|
percent_indicator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1430,6 +1470,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
|
printing:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: printing
|
||||||
|
sha256: "1c99cab90ebcc1fff65831d264627d5b529359d563e53f33ab9b8117f2d280bc"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.12.0"
|
||||||
process:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1454,6 +1502,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.3"
|
version: "1.2.3"
|
||||||
|
qr:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: qr
|
||||||
|
sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.1"
|
||||||
quiver:
|
quiver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -231,6 +231,8 @@ dependencies:
|
|||||||
|
|
||||||
mime: 1.0.4
|
mime: 1.0.4
|
||||||
|
|
||||||
|
htmltopdfwidgets: 1.0.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|||||||
Reference in New Issue
Block a user