FIX: exclude suppressed category topics in digest even if unmuted. (#14793)
Previously, suppressed category topics are included in the digest emails if the user visited that topic before and the `TopicUser` record is created with any notification level except 'muted'.
This commit is contained in:
parent
3254d35078
commit
53b7220638
|
@ -511,7 +511,7 @@ class Topic < ActiveRecord::Base
|
|||
# Remove muted and shared draft categories
|
||||
remove_category_ids = CategoryUser.where(user_id: user.id, notification_level: CategoryUser.notification_levels[:muted]).pluck(:category_id)
|
||||
if SiteSetting.digest_suppress_categories.present?
|
||||
remove_category_ids += SiteSetting.digest_suppress_categories.split("|").map(&:to_i)
|
||||
topics = topics.where("topics.category_id NOT IN (?)", SiteSetting.digest_suppress_categories.split("|").map(&:to_i))
|
||||
end
|
||||
if SiteSetting.shared_drafts_enabled?
|
||||
remove_category_ids << SiteSetting.shared_drafts_category
|
||||
|
|
|
@ -2071,11 +2071,15 @@ describe Topic do
|
|||
it "doesn't return topics from suppressed categories" do
|
||||
user = Fabricate(:user)
|
||||
category = Fabricate(:category_with_definition, created_at: 2.minutes.ago)
|
||||
Fabricate(:topic, category: category, created_at: 1.minute.ago)
|
||||
topic = Fabricate(:topic, category: category, created_at: 1.minute.ago)
|
||||
|
||||
SiteSetting.digest_suppress_categories = "#{category.id}"
|
||||
|
||||
expect(Topic.for_digest(user, 1.year.ago, top_order: true)).to be_blank
|
||||
|
||||
Fabricate(:topic_user, user: user, topic: topic, notification_level: TopicUser.notification_levels[:regular])
|
||||
|
||||
expect(Topic.for_digest(user, 1.year.ago, top_order: true)).to be_blank
|
||||
end
|
||||
|
||||
it "doesn't return topics from TL0 users" do
|
||||
|
|
Loading…
Reference in New Issue