Fix timeline emoji_reactions N+1 problem

This commit is contained in:
KMY 2023-09-15 09:31:12 +09:00
parent 7c387becb6
commit c0ff0754a3
12 changed files with 84 additions and 16 deletions

View file

@ -122,7 +122,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
end
def emoji_reactions
object.emoji_reactions_grouped_by_name(current_user&.account)
show_emoji_reaction? ? object.emoji_reactions_grouped_by_name(current_user&.account, permitted_account_ids: emoji_reaction_permitted_account_ids) : []
end
def emoji_reactions_count
@ -131,7 +131,17 @@ class REST::StatusSerializer < ActiveModel::Serializer
object.account.emoji_reaction_policy == :allow ? object.emoji_reactions_count : 0
else
object.account.show_emoji_reaction?(current_user.account) ? object.emoji_reactions_count : 0
show_emoji_reaction? ? object.emoji_reactions_count : 0
end
end
def show_emoji_reaction?
if relationships
return true if relationships.emoji_reaction_allows_map.nil?
relationships.emoji_reaction_allows_map[object.account_id] || false
else
object.account.show_emoji_reaction?(current_user.account)
end
end
@ -211,6 +221,10 @@ class REST::StatusSerializer < ActiveModel::Serializer
instance_options && instance_options[:relationships]
end
def emoji_reaction_permitted_account_ids
current_user.present? && instance_options && instance_options[:emoji_reaction_permitted_account_ids]&.permitted_account_ids
end
class ApplicationSerializer < ActiveModel::Serializer
attributes :name, :website