mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 12:12:26 +08:00
FIX: stop sync of tracking state when list is filtered
This stops sync of tracking state when list is filtered, in the past this would cause the tracking state to go off wack. Additionally this introduces an alias for "filter=tracking", called "f=tracking" This was done cause the term "filter" is used internally in 2 different ways the main way is for /unread /new filtering. Trying to also call a query param "filter" causes enormous amounts of internal pain, this circumvents the issue.
This commit is contained in:
parent
255b0e9f14
commit
ba482c251c
|
@ -14,7 +14,8 @@ export const queryParams = {
|
|||
q: { replace: true, refreshModel: true },
|
||||
tags: { replace: true },
|
||||
before: { replace: true, refreshModel: true },
|
||||
bumped_before: { replace: true, refreshModel: true }
|
||||
bumped_before: { replace: true, refreshModel: true },
|
||||
f: { replace: true, refreshModel: true }
|
||||
};
|
||||
|
||||
// Basic controller options
|
||||
|
|
|
@ -315,7 +315,7 @@ const TopicTrackingState = EmberObject.extend({
|
|||
});
|
||||
},
|
||||
|
||||
sync(list, filter) {
|
||||
sync(list, filter, queryParams) {
|
||||
const tracker = this,
|
||||
states = tracker.states;
|
||||
|
||||
|
@ -368,7 +368,18 @@ const TopicTrackingState = EmberObject.extend({
|
|||
});
|
||||
|
||||
// Correct missing states, safeguard in case message bus is corrupt
|
||||
if ((filter === "new" || filter === "unread") && !list.more_topics_url) {
|
||||
let shouldCompensate =
|
||||
(filter === "new" || filter === "unread") && !list.more_topics_url;
|
||||
|
||||
if (shouldCompensate && queryParams) {
|
||||
Object.keys(queryParams).forEach(k => {
|
||||
if (k !== "ascending" && k !== "order") {
|
||||
shouldCompensate = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (shouldCompensate) {
|
||||
const ids = {};
|
||||
list.topics.forEach(r => (ids["t" + r.id] = true));
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ function findTopicList(store, tracking, filter, filterParams, extras) {
|
|||
}).then(function(list) {
|
||||
list.set("listParams", filterParams);
|
||||
if (tracking) {
|
||||
tracking.sync(list, list.filter);
|
||||
tracking.sync(list, list.filter, filterParams);
|
||||
tracking.trackIncoming(list.filter);
|
||||
}
|
||||
Session.currentProp("topicList", list);
|
||||
|
|
|
@ -52,6 +52,7 @@ class TopicQuery
|
|||
state
|
||||
search
|
||||
q
|
||||
f
|
||||
group_name
|
||||
tags
|
||||
match_all_tags
|
||||
|
@ -806,7 +807,7 @@ class TopicQuery
|
|||
end
|
||||
end
|
||||
|
||||
if (filter = options[:filter]) && @user
|
||||
if (filter = (options[:filter] || options[:f])) && @user
|
||||
action =
|
||||
if filter == "bookmarked"
|
||||
PostActionType.types[:bookmark]
|
||||
|
|
Loading…
Reference in New Issue
Block a user