TF-1961 Refactor html transformer

(cherry picked from commit 0272e45226ddb12827b7ef4820b00632758c353a)
This commit is contained in:
dab246
2023-08-16 12:02:34 +07:00
committed by Dat Vu
parent 289d5bbbe2
commit 1af33dd20d
14 changed files with 134 additions and 130 deletions
@@ -13,10 +13,10 @@ import 'package:model/email/email_content_type.dart';
class HtmlAnalyzer {
final DioClient _dioClient;
final HtmlTransform _htmlTransform;
final HtmlEscape _htmlEscape;
HtmlAnalyzer(this._dioClient, this._htmlEscape);
HtmlAnalyzer(this._htmlTransform, this._htmlEscape);
Future<EmailContent> transformEmailContent(
EmailContent emailContent,
@@ -25,13 +25,9 @@ class HtmlAnalyzer {
) async {
switch(emailContent.type) {
case EmailContentType.textHtml:
final htmlTransform = HtmlTransform(
emailContent.content,
dioClient: _dioClient,
mapUrlDownloadCID: mapUrlDownloadCID
);
final htmlContent = await htmlTransform.transformToHtml(
final htmlContent = await _htmlTransform.transformToHtml(
contentHtml: emailContent.content,
mapUrlDownloadCID: mapUrlDownloadCID,
transformConfiguration: draftsEmail
? TransformConfiguration.create(customDomTransformers: TransformConfiguration.domTransformersForDraftEmail)
: null
@@ -39,8 +35,8 @@ class HtmlAnalyzer {
return EmailContent(emailContent.type, htmlContent);
case EmailContentType.textPlain:
final htmlTransform = HtmlTransform(emailContent.content);
final message = htmlTransform.transformToTextPlain(
final message = _htmlTransform.transformToTextPlain(
content: emailContent.content,
transformConfiguration: TransformConfiguration.create(
customTextTransformers: [SanitizeAutolinkHtmlTransformers(_htmlEscape)]
)
@@ -54,10 +50,12 @@ class HtmlAnalyzer {
Future<EmailContent> addTooltipWhenHoverOnLink(EmailContent emailContent) async {
switch(emailContent.type) {
case EmailContentType.textHtml:
final htmlTransform = HtmlTransform(emailContent.content);
final htmlContent = await htmlTransform.transformToHtml(
transformConfiguration: TransformConfiguration.create(
customDomTransformers: [const AddTooltipLinkTransformer()]));
final htmlContent = await _htmlTransform.transformToHtml(
contentHtml: emailContent.content,
transformConfiguration: TransformConfiguration.create(
customDomTransformers: [const AddTooltipLinkTransformer()]
)
);
return EmailContent(emailContent.type, htmlContent);
default:
return emailContent;
@@ -20,10 +20,15 @@ import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
class IdentityDataSourceImpl extends IdentityDataSource {
final HtmlTransform _htmlTransform;
final IdentityAPI _identityAPI;
final ExceptionThrower _exceptionThrower;
IdentityDataSourceImpl(this._identityAPI, this._exceptionThrower);
IdentityDataSourceImpl(
this._htmlTransform,
this._identityAPI,
this._exceptionThrower
);
@override
Future<IdentitiesResponse> getAllIdentities(Session session, AccountId accountId, {Properties? properties}) {
@@ -56,7 +61,8 @@ class IdentityDataSourceImpl extends IdentityDataSource {
@override
Future<String> transformHtmlSignature(String signature) {
return Future.sync(() async {
final signatureUnescape = await HtmlTransform(signature).transformToHtml(
final signatureUnescape = await _htmlTransform.transformToHtml(
contentHtml: signature,
transformConfiguration: TransformConfiguration.create(customDomTransformers: [
const RemoveScriptTransformer(),
const BlockQuotedTransformer(),
@@ -1,3 +1,4 @@
import 'package:core/presentation/utils/html_transformer/html_transform.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/data/datasource/identity_data_source.dart';
@@ -35,6 +36,7 @@ class IdentityInteractorsBindings extends InteractorsBindings {
@override
void bindingsDataSourceImpl() {
Get.lazyPut(() => IdentityDataSourceImpl(
Get.find<HtmlTransform>(),
Get.find<IdentityAPI>(),
Get.find<RemoteExceptionThrower>()));
}
@@ -110,6 +110,7 @@ class NetworkBindings extends Bindings {
void _bindingTransformer() {
Get.put(const HtmlEscape());
Get.put(HtmlAnalyzer(Get.find<DioClient>(), Get.find<HtmlEscape>()));
Get.put(HtmlTransform(Get.find<DioClient>()));
Get.put(HtmlAnalyzer(Get.find<HtmlTransform>(), Get.find<HtmlEscape>()));
}
}