Move message bus subscription into controller
This ensures we always correctly unsubscribe from the channel
This commit is contained in:
parent
a915f0135f
commit
312357988f
|
@ -153,24 +153,34 @@ function initialize(api, container) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
api.modifyClass("controller:topic", {
|
||||||
|
subscribe() {
|
||||||
|
this._super();
|
||||||
|
this.messageBus.subscribe("/staff/topic-assignment", data => {
|
||||||
|
const topic = this.get("model");
|
||||||
|
const topicId = topic.get("id");
|
||||||
|
|
||||||
|
if (data.topic_id === topicId) {
|
||||||
|
topic.set(
|
||||||
|
"assigned_to_user_id",
|
||||||
|
data.type === "assigned" ? data.assigned_to.id : null
|
||||||
|
);
|
||||||
|
topic.set("assigned_to_user", data.assigned_to);
|
||||||
|
}
|
||||||
|
this.appEvents.trigger("header:update-topic", topic);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
unsubscribe() {
|
||||||
|
this._super();
|
||||||
|
if (!this.get("content.id")) return;
|
||||||
|
this.messageBus.unsubscribe("/staff/topic-assignment");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
api.decorateWidget("post-contents:after-cooked", dec => {
|
api.decorateWidget("post-contents:after-cooked", dec => {
|
||||||
if (dec.attrs.post_number === 1) {
|
if (dec.attrs.post_number === 1) {
|
||||||
const postModel = dec.getModel();
|
const postModel = dec.getModel();
|
||||||
if (postModel) {
|
if (postModel) {
|
||||||
// Redraw widget when a message arrives.
|
|
||||||
const messageBus = container.lookup("message-bus:main");
|
|
||||||
messageBus.unsubscribe("/staff/topic-assignment");
|
|
||||||
messageBus.subscribe("/staff/topic-assignment", data => {
|
|
||||||
if (data.topic_id === postModel.get("topic.id")) {
|
|
||||||
postModel.set(
|
|
||||||
"topic.assigned_to_user_id",
|
|
||||||
data.type === "assigned" ? data.assigned_to.id : null
|
|
||||||
);
|
|
||||||
postModel.set("topic.assigned_to_user", data.assigned_to);
|
|
||||||
}
|
|
||||||
dec.widget.scheduleRerender();
|
|
||||||
});
|
|
||||||
|
|
||||||
const assignedToUser = postModel.get("topic.assigned_to_user");
|
const assignedToUser = postModel.get("topic.assigned_to_user");
|
||||||
if (assignedToUser) {
|
if (assignedToUser) {
|
||||||
return dec.widget.attach("assigned-to", {
|
return dec.widget.attach("assigned-to", {
|
||||||
|
|
Loading…
Reference in New Issue