TF-2520 Implement print email in email view

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-02-28 17:13:53 +07:00
committed by Dat H. Pham
parent 4f206739aa
commit ab2c32154e
17 changed files with 330 additions and 8 deletions
@@ -1,5 +1,4 @@
import 'package:core/core.dart';
import 'package:core/utils/file_utils.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:get/get.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/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';
@@ -102,6 +103,11 @@ class ComposerBindings 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>(),
@@ -122,6 +128,7 @@ class ComposerBindings 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
@@ -144,6 +151,7 @@ class ComposerBindings extends BaseBindings {
},
Get.find<HtmlDataSource>(),
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/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/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/restore_deleted_message_request.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 HtmlDataSource _htmlDataSource;
final StateDataSource _stateDataSource;
final PrintFileDataSource _printFileDataSource;
EmailRepositoryImpl(
this.emailDataSource,
this._htmlDataSource,
this._stateDataSource
this._stateDataSource,
this._printFileDataSource,
);
@override
@@ -228,4 +232,9 @@ class EmailRepositoryImpl extends EmailRepository {
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId 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/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));
}
}
@@ -1,6 +1,8 @@
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/file_utils.dart';
import 'package:core/utils/print_utils.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/base/base_bindings.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/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';
@@ -178,6 +182,7 @@ class MailboxDashBoardBindings extends BaseBindings {
Get.lazyPut<SearchDataSource>(() => Get.find<SearchDataSourceImpl>());
Get.lazyPut<ThreadDataSource>(() => Get.find<ThreadDataSourceImpl>());
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
Get.lazyPut<MailboxDataSource>(() => Get.find<MailboxDataSourceImpl>());
Get.lazyPut<SessionStorageComposerDatasource>(() => Get.find<SessionStorageComposerDatasourceImpl>());
Get.lazyPut<SpamReportDataSource>(() => Get.find<SpamReportDataSourceImpl>());
@@ -206,6 +211,11 @@ class MailboxDashBoardBindings extends BaseBindings {
Get.find<IOSSharingManager>(),
Get.find<CacheExceptionThrower>()
));
Get.lazyPut(() => PrintFileDataSourceImpl(
Get.find<PrintUtils>(),
Get.find<ImagePaths>(),
Get.find<CacheExceptionThrower>()
));
Get.lazyPut(() => MailboxDataSourceImpl(
Get.find<MailboxAPI>(),
Get.find<MailboxIsolateWorker>(),
@@ -346,6 +356,7 @@ class MailboxDashBoardBindings extends BaseBindings {
},
Get.find<HtmlDataSource>(),
Get.find<StateDataSource>(),
Get.find<PrintFileDataSource>(),
));
Get.lazyPut(() => SearchRepositoryImpl(Get.find<SearchDataSource>()));
Get.lazyPut(() => ThreadRepositoryImpl(
@@ -1,13 +1,17 @@
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/print_utils.dart';
import 'package:get/get.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/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';
@@ -41,6 +45,7 @@ class SendEmailInteractorBindings extends InteractorsBindings {
Get.lazyPut<MailboxDataSource>(() => Get.find<MailboxDataSourceImpl>());
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
Get.lazyPut<StateDataSource>(() => Get.find<StateDataSourceImpl>());
Get.lazyPut<PrintFileDataSource>(() => Get.find<PrintFileDataSourceImpl>());
}
@override
@@ -62,6 +67,11 @@ class SendEmailInteractorBindings extends InteractorsBindings {
Get.find<StateCacheManager>(),
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>(),
@@ -93,6 +103,7 @@ class SendEmailInteractorBindings extends InteractorsBindings {
},
Get.find<HtmlDataSource>(),
Get.find<StateDataSource>(),
Get.find<PrintFileDataSource>(),
));
Get.lazyPut(() => MailboxRepositoryImpl(
{
@@ -1,12 +1,16 @@
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/print_utils.dart';
import 'package:get/get.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/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';
@@ -71,6 +75,7 @@ class FcmInteractorBindings extends InteractorsBindings {
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
@@ -106,6 +111,11 @@ class FcmInteractorBindings extends InteractorsBindings {
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>(),
@@ -171,6 +181,7 @@ class FcmInteractorBindings extends InteractorsBindings {
DataSourceType.hiveCache: Get.find<EmailHiveCacheDataSourceImpl>()
},
Get.find<HtmlDataSource>(),
Get.find<StateDataSource>()));
Get.find<StateDataSource>(),
Get.find<PrintFileDataSource>()));
}
}
+7 -1
View File
@@ -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": {
"type": "text",
@@ -3659,5 +3659,11 @@
"type": "text",
"placeholders_order": [],
"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/file_utils.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:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:get/get.dart';
import 'package:htmltopdfwidgets/htmltopdfwidgets.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/main/utils/app_config.dart';
@@ -60,6 +62,8 @@ class CoreBindings extends Bindings {
Get.put(CompressFileUtils());
Get.put(AppConfigLoader());
Get.put(FileUtils());
Get.put(HTMLToPdf());
Get.put(PrintUtils(Get.find<HTMLToPdf>(), Get.find<ImagePaths>()));
}
void _bindingIsolate() {
@@ -3812,4 +3812,11 @@ class AppLocalizations {
'Print all',
name: 'printAll');
}
String get replyToEmailAddressPrefix {
return Intl.message(
'Reply-To',
name: 'replyToEmailAddressPrefix',
);
}
}