From c2170991c7889b8f6c6434f416cb0a8450db25a1 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 16:31:44 +0100 Subject: Fix reblogs being discarded after the reblogged status (#19731) --- app/services/remove_status_service.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/services/remove_status_service.rb') diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index f9fdea2cb..37d2dabae 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -19,7 +19,7 @@ class RemoveStatusService < BaseService @options = options with_lock("distribute:#{@status.id}") do - @status.discard + @status.discard_with_reblogs StatusPin.find_by(status: @status)&.destroy @@ -102,7 +102,7 @@ class RemoveStatusService < BaseService # because once original status is gone, reblogs will disappear # without us being able to do all the fancy stuff - @status.reblogs.includes(:account).reorder(nil).find_each do |reblog| + @status.reblogs.rewhere(deleted_at: [nil, @status.deleted_at]).includes(:account).reorder(nil).find_each do |reblog| RemoveStatusService.new.call(reblog, original_removed: true) end end -- cgit From c4b92b1aee27a813e24395d43e265cc02a8fe9a3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 00:09:52 +0100 Subject: Fix n+1 query during status removal (#19753) --- app/helpers/application_helper.rb | 2 +- app/services/remove_status_service.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'app/services/remove_status_service.rb') diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9cc34cab6..8706f5c2a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -203,7 +203,7 @@ module ApplicationHelper permit_visibilities.shift(permit_visibilities.index(default_privacy) + 1) if default_privacy.present? state_params[:visibility] = params[:visibility] if permit_visibilities.include? params[:visibility] - if user_signed_in? + if user_signed_in? && current_user.functional? state_params[:settings] = state_params[:settings].merge(Web::Setting.find_by(user: current_user)&.data || {}) state_params[:push_subscription] = current_account.user.web_push_subscription(current_session) state_params[:current_account] = current_account diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 37d2dabae..45cfb75f4 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -57,13 +57,13 @@ class RemoveStatusService < BaseService end def remove_from_followers - @account.followers_for_local_distribution.reorder(nil).find_each do |follower| + @account.followers_for_local_distribution.includes(:user).reorder(nil).find_each do |follower| FeedManager.instance.unpush_from_home(follower, @status) end end def remove_from_lists - @account.lists_for_local_distribution.select(:id, :account_id).reorder(nil).find_each do |list| + @account.lists_for_local_distribution.select(:id, :account_id).includes(account: :user).reorder(nil).find_each do |list| FeedManager.instance.unpush_from_list(list, @status) end end -- cgit