FIX: prevents registering multiple `topic-notifications-button:changed` (#9356)

A large topic page will always have the bottom tracking button, and will also have the timeline, meaning we already had 2 tracking events.

But it gets even worse when you know that the timeline button is a component connector which will trigger `didInsertElement` very frequently, meaning we were constantly adding more and more appEvents handlers.
This commit is contained in:
Joffrey JAFFEUX 2020-04-06 15:06:26 +02:00 committed by GitHub
parent 81c912bb00
commit a947b7b839
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 11 deletions

View File

@ -388,7 +388,8 @@ createWidget("timeline-footer-controls", {
topic,
showFullTitle: false,
appendReason: false,
placement: "bottom-end"
placement: "bottom-end",
mountedAsWidget: true
},
["notificationLevel"]
)

View File

@ -10,21 +10,25 @@ export default Component.extend({
didInsertElement() {
this._super(...arguments);
this.appEvents.on(
"topic-notifications-button:changed",
this,
"_changeTopicNotificationLevel"
);
if (!this.mountedAsWidget) {
this.appEvents.on(
"topic-notifications-button:changed",
this,
"_changeTopicNotificationLevel"
);
}
},
willDestroyElement() {
this._super(...arguments);
this.appEvents.off(
"topic-notifications-button:changed",
this,
"_changeTopicNotificationLevel"
);
if (!this.mountedAsWidget) {
this.appEvents.off(
"topic-notifications-button:changed",
this,
"_changeTopicNotificationLevel"
);
}
},
_changeTopicNotificationLevel(level) {