FEATURE: exclude muted categories from the latest and new tabs

This commit is contained in:
Sam
2014-02-03 16:05:49 +11:00
parent f7bf4b2dc3
commit d0a6dd88df
3 changed files with 44 additions and 29 deletions

View File

@ -53,7 +53,7 @@ class TopicQuery
# The latest view of topics
def list_latest
create_list(:latest)
TopicList.new(:latest, @user, latest_results)
end
# The starred topics
@ -278,9 +278,29 @@ class TopicQuery
def new_results(options={})
result = TopicQuery.new_filter(default_results(options), @user.treat_as_new_topic_start_date)
result = remove_muted_categories(result, @user)
suggested_ordering(result, options)
end
def latest_results(options={})
result = default_results(options)
remove_muted_categories(result, @user)
end
def remove_muted_categories(list, user)
if user
list = list.where("NOT EXISTS(
SELECT 1 FROM category_users cu
WHERE cu.user_id = ? AND
cu.category_id = topics.category_id AND
cu.notification_level = ?
)", user.id, CategoryUser.notification_levels[:muted])
end
list
end
def unread_results(options={})
result = TopicQuery.unread_filter(default_results(options.reverse_merge(:unordered => true)))
.order('CASE WHEN topics.user_id = tu.user_id THEN 1 ELSE 2 END')