FIX: If a user deletes a hidden post, it should not lose history

FIX: If a user deletes a hidden post, it should not lose history

diff --git a/lib/post_destroyer.rb b/lib/post_destroyer.rb
index e0c5ff3..228e5ad 100644
--- a/lib/post_destroyer.rb
+++ b/lib/post_destroyer.rb
@@ -179,7 +179,8 @@ class PostDestroyer
       key = @post.is_first_post? ? 'js.topic.deleted_by_author' : 'js.post.deleted_by_author'
       @post.revise(@user,
         { raw: I18n.t(key, count: delete_removed_posts_after) },
-        force_new_version: true
+        force_new_version: true,
+        deleting_post: true
       )
 
       Post.transaction do
diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb
index eaa0009..8ac7b29 100644
--- a/lib/post_revisor.rb
+++ b/lib/post_revisor.rb
@@ -407,6 +407,7 @@ class PostRevisor
   end
 
   def remove_flags_and_unhide_post
+    return if @opts[:deleting_post]
     return unless editing_a_flagged_and_hidden_post?
 
     flaggers = []
diff --git a/spec/components/post_destroyer_spec.rb b/spec/components/post_destroyer_spec.rb
index ddba7b2..f8d050c 100644
--- a/spec/components/post_destroyer_spec.rb
+++ b/spec/components/post_destroyer_spec.rb
@@ -345,6 +345,12 @@ describe PostDestroyer do
       end
     end
 
+    it "maintains history when a user destroys a hidden post" do
+      post.hide!(PostActionType.types[:inappropriate])
+      PostDestroyer.new(post.user, post).destroy
+      expect(post.revisions[0].modifications['raw']).to be_present
+    end
+
     it "when topic is destroyed, it updates user_stats correctly" do
       SiteSetting.min_topic_title_length = 5
       post.topic.update_column(:title, "xyz")

GitHub sha: 0d84c5b8

1 Like