diff --git a/app/assets/javascripts/discourse/models/topic_tracking_state.js b/app/assets/javascripts/discourse/models/topic_tracking_state.js index 5cb6ac2dc69..5e01c92a80a 100644 --- a/app/assets/javascripts/discourse/models/topic_tracking_state.js +++ b/app/assets/javascripts/discourse/models/topic_tracking_state.js @@ -136,6 +136,10 @@ Discourse.TopicTrackingState = Discourse.Model.extend({ countNew: function(category_name){ return _.chain(this.states) .where({last_read_post_number: null}) + .where(function(topic) { + return topic.notification_level === null || + topic.notification_level >= Discourse.Topic.NotificationLevel.TRACKING; + }) .where(function(topic){ return topic.category_name === category_name || !category_name;}) .value() .length; diff --git a/app/models/topic_tracking_state.rb b/app/models/topic_tracking_state.rb index da7de329fb1..c6a9e4b35b3 100644 --- a/app/models/topic_tracking_state.rb +++ b/app/models/topic_tracking_state.rb @@ -133,6 +133,10 @@ class TopicTrackingState JOIN group_users gu ON gu.user_id = u.id AND cg.group_id = gu.group_id WHERE c2.read_restricted ) ) + AND NOT EXISTS( SELECT 1 FROM category_users cu + WHERE cu.user_id = u.id AND + cu.category_id = topics.category_id AND + cu.notification_level = #{CategoryUser.notification_levels[:muted]}) SQL