FIX: throttles topic tracking shortcut and enforces topic id (#9159)

This commit is contained in:
Joffrey JAFFEUX 2020-03-10 17:17:54 +01:00 committed by GitHub
parent d436b600fb
commit 3f2c0b42fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 17 deletions

View File

@ -3,6 +3,7 @@ import DiscourseURL from "discourse/lib/url";
import Composer from "discourse/models/composer";
import { minimumOffset } from "discourse/lib/offset-calculator";
import { ajax } from "discourse/lib/ajax";
import { throttle } from "@ember/runloop";
const bindings = {
"!": { postAction: "showFlags" },
@ -298,34 +299,26 @@ export default {
},
setTrackingToMuted(event) {
this.appEvents.trigger("topic-notifications-button:changed", {
type: "notification",
id: 0,
event
});
throttle(this, "_setTracking", { id: 0, event }, 250, true);
},
setTrackingToRegular(event) {
this.appEvents.trigger("topic-notifications-button:changed", {
type: "notification",
id: 1,
event
});
throttle(this, "_setTracking", { id: 1, event }, 250, true);
},
setTrackingToTracking(event) {
this.appEvents.trigger("topic-notifications-button:changed", {
type: "notification",
id: 2,
event
});
throttle(this, "_setTracking", { id: 2, event }, 250, true);
},
setTrackingToWatching(event) {
throttle(this, "_setTracking", { id: 3, event }, 250, true);
},
_setTracking(params) {
this.appEvents.trigger("topic-notifications-button:changed", {
type: "notification",
id: 3,
event
id: params.id,
event: params.event
});
},

View File

@ -28,6 +28,17 @@ export default Component.extend({
},
_changeTopicNotificationLevel(level) {
// this change is coming from a keyboard event
if (level.event) {
const topicSectionNode = level.event.target.querySelector("#topic");
if (topicSectionNode && topicSectionNode.dataset.topicId) {
const topicId = parseInt(topicSectionNode.dataset.topicId, 10);
if (topicId && topicId !== this.topic.id) {
return;
}
}
}
if (level.id !== this.notificationLevel) {
this.topic.details.updateNotifications(level.id);
}