diff --git a/core/lib/presentation/utils/html_transformer/dom/remove_lazy_loading_for_background_image_transformers.dart b/core/lib/presentation/utils/html_transformer/dom/remove_lazy_loading_for_background_image_transformers.dart new file mode 100644 index 000000000..3a397b960 --- /dev/null +++ b/core/lib/presentation/utils/html_transformer/dom/remove_lazy_loading_for_background_image_transformers.dart @@ -0,0 +1,32 @@ +import 'package:core/data/network/dio_client.dart'; +import 'package:core/presentation/utils/html_transformer/base/dom_transformer.dart'; +import 'package:core/utils/app_logger.dart'; +import 'package:html/dom.dart'; + +class RemoveLazyLoadingForBackgroundImageTransformer extends DomTransformer { + const RemoveLazyLoadingForBackgroundImageTransformer(); + + @override + Future process({ + required Document document, + required DioClient dioClient, + Map? mapUrlDownloadCID, + }) async { + final elements = document.querySelectorAll('[lazy]'); + log('RemoveLazyLoadingForBackgroundImageTransformer::process:elements: ${elements.length}'); + await Future.wait(elements.map((element) async { + var exStyle = element.attributes['style']; + final dataSrc = element.attributes['data-src']; + final backgroundImgUrl = 'background-image:url($dataSrc);'; + if (exStyle != null) { + exStyle = '$exStyle;$backgroundImgUrl'; + element.attributes['style'] = exStyle; + } else { + element.attributes['style'] = backgroundImgUrl; + } + element.attributes.remove('data-src'); + element.attributes.remove('lazy'); + log('RemoveLazyLoadingForBackgroundImageTransformer::process:NEW_ELEMENT: ${element.outerHtml}'); + })); + } +} diff --git a/core/lib/presentation/utils/html_transformer/transform_configuration.dart b/core/lib/presentation/utils/html_transformer/transform_configuration.dart index 12295c42b..2c61271b6 100644 --- a/core/lib/presentation/utils/html_transformer/transform_configuration.dart +++ b/core/lib/presentation/utils/html_transformer/transform_configuration.dart @@ -7,6 +7,7 @@ import 'package:core/presentation/utils/html_transformer/dom/add_tooltip_link_tr import 'package:core/presentation/utils/html_transformer/dom/blockcode_transformers.dart'; import 'package:core/presentation/utils/html_transformer/dom/blockquoted_transformers.dart'; import 'package:core/presentation/utils/html_transformer/dom/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_tooltip_link_transformers.dart'; import 'package:core/presentation/utils/html_transformer/dom/script_transformers.dart'; import 'package:core/presentation/utils/html_transformer/dom/sigature_transformers.dart'; @@ -38,6 +39,7 @@ class TransformConfiguration { if (PlatformInfo.isWeb) const RemoveTooltipLinkTransformer(), const SignatureTransformer(), + const RemoveLazyLoadingForBackgroundImageTransformer(), ]); factory TransformConfiguration.forDraftsEmail() => TransformConfiguration.empty(); diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 359060e5e..053bec7d5 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -1418,7 +1418,7 @@ class ComposerController extends BaseController { accountId, emailId, mailboxDashBoardController.baseDownloadUrl, - TransformConfiguration.empty() + TransformConfiguration.forDraftsEmail() )); } }