PERF: Use 1 query to load group and tag notification default.

PERF: Use 1 query to load group and tag notification default.

diff --git a/app/serializers/basic_group_serializer.rb b/app/serializers/basic_group_serializer.rb
index 3fee36f..8004e7c 100644
--- a/app/serializers/basic_group_serializer.rb
+++ b/app/serializers/basic_group_serializer.rb
@@ -134,11 +134,23 @@ class BasicGroupSerializer < ApplicationSerializer
 
   [:watching, :regular, :tracking, :watching_first_post, :muted].each do |level|
     define_method("#{level}_category_ids") do
-      GroupCategoryNotificationDefault.lookup(object, level).pluck(:category_id)
+      @group_category_notification_defaults ||= begin
+        GroupCategoryNotificationDefault.where(group: object).pluck(:category_id)
+      end
+
+      @group_category_notification_defaults.filter do |default|
+        default.notification_level == NotificationLevels.all[level]
+      end
     end
 
     define_method("#{level}_tags") do
-      GroupTagNotificationDefault.lookup(object, level).joins(:tag).pluck('tags.name')
+      @group_tag_notification_defaults ||= begin
+        GroupTagNotificationDefault.where(group: object).joins(:tag).pluck('tags.name')
+      end
+
+      @group_tag_notification_defaults.filter do |default|
+        default.notification_level == NotificationLevels.all[level]
+      end
     end
   end
 

GitHub sha: 5ef9d4d5

This commit appears in #10633 which was approved by nlalonde. It was merged by tgxworld.

This commit has been mentioned on Discourse Meta. There might be relevant details there:

https://meta.discourse.org/t/there-are-no-visible-groups/163604/1