diff --git a/app/serializers/basic_post_serializer.rb b/app/serializers/basic_post_serializer.rb
index 9d57a1c6f1c..32c14b5c72d 100644
--- a/app/serializers/basic_post_serializer.rb
+++ b/app/serializers/basic_post_serializer.rb
@@ -10,6 +10,8 @@ class BasicPostSerializer < ApplicationSerializer
:cooked,
:cooked_hidden
+ attr_accessor :topic_view
+
def name
object.user && object.user.name
end
@@ -41,20 +43,27 @@ class BasicPostSerializer < ApplicationSerializer
cooked = object.filter_quotes(@parent_post)
if scope&.user
- group = Group
- .joins('JOIN group_users ON groups.id = group_users.group_id')
- .find_by(
- id: object.custom_fields['requested_group_id'].to_i,
- group_users: { user_id: scope.user.id, owner: true }
- )
- if group
- cooked << <<~EOF
-
-
- #{I18n.t('groups.request_membership_pm.handle')}
-
- EOF
+ # PERF: this should not run on every post, only specific ones
+ # also, why is this in basic post serializer?
+ requested_group_id = post_custom_fields['requested_group_id'].to_i
+
+ if requested_group_id > 0
+ group = Group
+ .joins('JOIN group_users ON groups.id = group_users.group_id')
+ .find_by(
+ id: object.custom_fields['requested_group_id'].to_i,
+ group_users: { user_id: scope.user.id, owner: true }
+ )
+
+ if group
+ cooked << <<~EOF
+
+
+ #{I18n.t('groups.request_membership_pm.handle')}
+
+ EOF
+ end
end
end
@@ -66,4 +75,12 @@ class BasicPostSerializer < ApplicationSerializer
SiteSetting.enable_names?
end
+ def post_custom_fields
+ @post_custom_fields ||= if @topic_view
+ (@topic_view.post_custom_fields || {})[object.id] || {}
+ else
+ object.custom_fields
+ end
+ end
+
end
diff --git a/app/serializers/post_serializer.rb b/app/serializers/post_serializer.rb
index 2221359aafd..7ab24caacc5 100644
--- a/app/serializers/post_serializer.rb
+++ b/app/serializers/post_serializer.rb
@@ -4,7 +4,6 @@ class PostSerializer < BasicPostSerializer
# To pass in additional information we might need
INSTANCE_VARS ||= [
- :topic_view,
:parent_post,
:add_raw,
:add_title,
@@ -490,12 +489,4 @@ private
@post_actions ||= (@topic_view&.all_post_actions || {})[object.id]
end
- def post_custom_fields
- @post_custom_fields ||= if @topic_view
- (@topic_view.post_custom_fields || {})[object.id] || {}
- else
- object.custom_fields
- end
- end
-
end