From ebe6fa95be55998937bafb08711cba65f7a0ef1e Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Mon, 9 Dec 2019 15:39:25 +0200 Subject: [PATCH] FIX: Optimize images in Onebox (#8471) This commit ensures that images in Onebox are being optimized, but not converted to lightbox too. --- lib/cooked_post_processor.rb | 9 +++++---- spec/components/cooked_post_processor_spec.rb | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index 52c837ecaf8..78372510642 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -206,9 +206,7 @@ class CookedPostProcessor # minus data images @doc.css("img[src^='data']") - # minus emojis - @doc.css("img.emoji") - - # minus oneboxed images - oneboxed_images + @doc.css("img.emoji") end def extract_images_for_post @@ -346,7 +344,10 @@ class CookedPostProcessor end end - add_lightbox!(img, original_width, original_height, upload, cropped: crop) if img.ancestors('.quote').blank? + if img.ancestors('.onebox, .onebox-body, .quote').blank? && !img.classes.include?("onebox") + add_lightbox!(img, original_width, original_height, upload, cropped: crop) + end + optimize_image!(img, upload, cropped: crop) if upload end diff --git a/spec/components/cooked_post_processor_spec.rb b/spec/components/cooked_post_processor_spec.rb index 70fa66e5a78..f29701635b3 100644 --- a/spec/components/cooked_post_processor_spec.rb +++ b/spec/components/cooked_post_processor_spec.rb @@ -946,6 +946,21 @@ describe CookedPostProcessor do expect(doc.css('.lightbox-wrapper').size).to eq(0) expect(doc.css('img').first['srcset']).to_not eq(nil) end + + it "optimizes images in Onebox" do + Oneboxer.expects(:onebox) + .with("https://discourse.org", anything) + .returns("") + + post = Fabricate(:post, raw: "https://discourse.org") + + cpp = CookedPostProcessor.new(post, disable_loading_image: true) + cpp.post_process + + doc = Nokogiri::HTML::fragment(cpp.html) + expect(doc.css('.lightbox-wrapper').size).to eq(0) + expect(doc.css('img').first['srcset']).to_not eq(nil) + end end context "#post_process_oneboxes" do