From 674c8aa19f4f4e44a2f3131976926ee8ae7edd99 Mon Sep 17 00:00:00 2001
From: girishpanchal30 <girish@krishaweb.com>
Date: Fri, 7 Mar 2025 12:12:51 +0530
Subject: [PATCH] fix: display optimized images in cart and minicart

---
 inc/compatibilities/woocommerce.php | 30 +++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/inc/compatibilities/woocommerce.php b/inc/compatibilities/woocommerce.php
index ff9e70bf..a5984e39 100644
--- a/inc/compatibilities/woocommerce.php
+++ b/inc/compatibilities/woocommerce.php
@@ -22,9 +22,11 @@ public function should_load() {
 	 * Register integration details.
 	 */
 	public function register() {
-		if ( Optml_Main::instance()->admin->settings->use_lazyload() ) {
+		if ( Optml_Main::instance()->admin->settings->is_offload_enabled() && Optml_Main::instance()->admin->settings->use_lazyload() ) {
 			add_filter( 'optml_lazyload_early_flags', [ $this, 'add_lazyload_early_flag' ], PHP_INT_MAX, 1 );
 		}
+		add_filter( 'woocommerce_cart_item_thumbnail', [ Optml_Main::instance()->manager, 'replace_content' ] );
+		add_filter( 'woocommerce_store_api_cart_item_images', [ $this, 'replace_store_api_cart_item_images' ] );
 	}
 	/**
 	 * Add ignore lazyload flag.
@@ -72,9 +74,29 @@ public function add_product_pages_to_image_query( $parents = [ 0 ] ) {
 	 * @return bool Whether to load the compatibility or not.
 	 */
 	public function should_load_early() {
-		if ( Optml_Main::instance()->admin->settings->get( 'offload_media' ) === 'enabled' ) {
-			return true;
+		return true;
+	}
+
+	/**
+	 * Filter cart item images url.
+	 *
+	 * @param array $product_images Product images.
+	 *
+	 * @return array Filtered images.
+	 */
+	public function replace_store_api_cart_item_images( $product_images ) {
+		if ( empty( $product_images ) ) {
+			return $product_images;
 		}
-		return false;
+		do_action( 'optml_replacer_setup' );
+		$product_images = array_map(
+			function ( $product_image ) {
+				$product_image->thumbnail = Optml_Main::instance()->manager->url_replacer->build_url( $product_image->thumbnail );
+				$product_image->src       = $product_image->thumbnail;
+				return $product_image;
+			},
+			$product_images
+		);
+		return $product_images;
 	}
 }