From 0fd39cc51161cb5cc1381f28a6d259ebbf26c469 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Thu, 6 Feb 2020 11:19:40 -0500 Subject: [PATCH] FIX: Remove post/topic image_url on post edits - resets image_url when image is removed from first post on edit - excludes onebox icons from being featured as topic/post images --- lib/cooked_post_processor.rb | 10 ++++++++-- spec/components/cooked_post_processor_spec.rb | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index a73f65f41f0..6936ac20887 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -216,7 +216,9 @@ class CookedPostProcessor # minus emojis @doc.css("img.emoji") - # minus images inside quotes - @doc.css(".quote img") + @doc.css(".quote img") - + # minus onebox site icons + @doc.css("img.site-icon") end def oneboxed_images @@ -488,7 +490,11 @@ class CookedPostProcessor def update_post_image img = extract_images_for_post.first - return if img.blank? + if img.blank? + @post.update_column(:image_url, nil) if @post.image_url + @post.topic.update_column(:image_url, nil) if @post.topic.image_url + return + end if img["src"].present? @post.update_column(:image_url, img["src"][0...255]) # post diff --git a/spec/components/cooked_post_processor_spec.rb b/spec/components/cooked_post_processor_spec.rb index 9e23a18a92b..f5ba4d386a4 100644 --- a/spec/components/cooked_post_processor_spec.rb +++ b/spec/components/cooked_post_processor_spec.rb @@ -774,6 +774,21 @@ describe CookedPostProcessor do post.topic.reload expect(post.topic.image_url).to be_present end + + it "removes image if post is edited and no longer has an image" do + FastImage.stubs(:size) + + cpp.post_process + post.topic.reload + expect(post.topic.image_url).to be_present + expect(post.image_url).to be_present + + post.update!(raw: "This post no longer has an image.") + CookedPostProcessor.new(post).post_process + post.topic.reload + expect(post.topic.image_url).not_to be_present + expect(post.image_url).not_to be_present + end end context "post image" do