mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: mark topics in sub categories as unread when dismissing parent
Previously we would only dismiss the parent category and leave the child categories unread
This commit is contained in:
@@ -18,7 +18,7 @@ export default Ember.Mixin.create({
|
||||
this.selected.clear();
|
||||
},
|
||||
|
||||
dismissRead(operationType) {
|
||||
dismissRead(operationType, categoryOptions) {
|
||||
let operation;
|
||||
if (operationType === "posts") {
|
||||
operation = { type: "dismiss_posts" };
|
||||
@@ -36,7 +36,8 @@ export default Ember.Mixin.create({
|
||||
promise = Discourse.Topic.bulkOperationByFilter(
|
||||
"unread",
|
||||
operation,
|
||||
this.get("category.id")
|
||||
this.get("category.id"),
|
||||
categoryOptions
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -733,8 +733,13 @@ Topic.reopenClass({
|
||||
});
|
||||
},
|
||||
|
||||
bulkOperationByFilter(filter, operation, categoryId) {
|
||||
const data = { filter, operation };
|
||||
bulkOperationByFilter(filter, operation, categoryId, options) {
|
||||
let data = { filter, operation };
|
||||
|
||||
if (options && options.includeSubcategories) {
|
||||
data.include_subcategories = true;
|
||||
}
|
||||
|
||||
if (categoryId) data.category_id = categoryId;
|
||||
return ajax("/topics/bulk", {
|
||||
type: "PUT",
|
||||
|
||||
@@ -60,12 +60,15 @@ export default Discourse.Route.extend(OpenComposer, {
|
||||
},
|
||||
|
||||
dismissReadTopics(dismissTopics) {
|
||||
var operationType = dismissTopics ? "topics" : "posts";
|
||||
this.controllerFor("discovery/topics").send("dismissRead", operationType);
|
||||
const operationType = dismissTopics ? "topics" : "posts";
|
||||
this.send("dismissRead", operationType);
|
||||
},
|
||||
|
||||
dismissRead(operationType) {
|
||||
this.controllerFor("discovery/topics").send("dismissRead", operationType);
|
||||
const controller = this.controllerFor("discovery/topics");
|
||||
controller.send("dismissRead", operationType, {
|
||||
includeSubcategories: !controller.noSubcategories
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -779,7 +779,17 @@ class TopicsController < ApplicationController
|
||||
elsif params[:filter] == 'unread'
|
||||
tq = TopicQuery.new(current_user)
|
||||
topics = TopicQuery.unread_filter(tq.joined_topic_user, current_user.id, staff: guardian.is_staff?).listable_topics
|
||||
topics = topics.where('category_id = ?', params[:category_id]) if params[:category_id]
|
||||
|
||||
if params[:category_id]
|
||||
if params[:include_subcategories]
|
||||
topics = topics.where(<<~SQL, category_id: params[:category_id])
|
||||
category_id in (select id FROM categories WHERE parent_category_id = :category_id) OR
|
||||
category_id = :category_id
|
||||
SQL
|
||||
else
|
||||
topics = topics.where('category_id = ?', params[:category_id])
|
||||
end
|
||||
end
|
||||
topic_ids = topics.pluck(:id)
|
||||
else
|
||||
raise ActionController::ParameterMissing.new(:topic_ids)
|
||||
|
||||
Reference in New Issue
Block a user