DEV: Unsubscribe from MessageBus channel when leaving review-index route (#18395)
We subscribe to a couple of MessageBus channels when the review-index route is entered, but we should unsubscribe when exiting the route otherwise callbacks would leak every time the review-index is entered and that might cause subtle and weird bugs or errors.
This commit is contained in:
parent
567fcaecb8
commit
b10b5eb17b
|
@ -51,7 +51,7 @@ export default DiscourseRoute.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
activate() {
|
activate() {
|
||||||
this.messageBus.subscribe("/reviewable_claimed", (data) => {
|
this._updateClaimedBy = (data) => {
|
||||||
const reviewables = this.controller.reviewables;
|
const reviewables = this.controller.reviewables;
|
||||||
if (reviewables) {
|
if (reviewables) {
|
||||||
const user = data.user
|
const user = data.user
|
||||||
|
@ -63,13 +63,9 @@ export default DiscourseRoute.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
const channel = this.currentUser.redesigned_user_menu_enabled
|
this._updateReviewables = (data) => {
|
||||||
? `/reviewable_counts/${this.currentUser.id}`
|
|
||||||
: "/reviewable_counts";
|
|
||||||
|
|
||||||
this.messageBus.subscribe(channel, (data) => {
|
|
||||||
if (data.updates) {
|
if (data.updates) {
|
||||||
this.controller.reviewables.forEach((reviewable) => {
|
this.controller.reviewables.forEach((reviewable) => {
|
||||||
const updates = data.updates[reviewable.id];
|
const updates = data.updates[reviewable.id];
|
||||||
|
@ -78,15 +74,31 @@ export default DiscourseRoute.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
|
this.messageBus.subscribe("/reviewable_claimed", this._updateClaimedBy);
|
||||||
|
this.messageBus.subscribe(
|
||||||
|
this._reviewableCountsChannel(),
|
||||||
|
this._updateReviewables
|
||||||
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
deactivate() {
|
deactivate() {
|
||||||
this.messageBus.unsubscribe("/reviewable_claimed");
|
this.messageBus.unsubscribe("/reviewable_claimed", this._updateClaimedBy);
|
||||||
|
this.messageBus.unsubscribe(
|
||||||
|
this._reviewableCountsChannel(),
|
||||||
|
this._updateReviewables
|
||||||
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
@action
|
@action
|
||||||
refreshRoute() {
|
refreshRoute() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_reviewableCountsChannel() {
|
||||||
|
return this.currentUser.redesigned_user_menu_enabled
|
||||||
|
? `/reviewable_counts/${this.currentUser.id}`
|
||||||
|
: "/reviewable_counts";
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue