REFACTOR: extract MessageBus dependent initializers

This commit is contained in:
Régis Hanol 2014-06-18 20:03:24 +02:00
parent 30611c343c
commit 39aa87dedf
4 changed files with 60 additions and 24 deletions

View File

@ -0,0 +1,26 @@
/**
Subscribe to "asset-version" change events via the Message Bus
**/
export default {
name: "asset-version",
after: "message-bus",
initialize: function () {
if (!Discourse.MessageBus) { return; }
Discourse.MessageBus.subscribe("/global/asset-version", function (version) {
Discourse.set("assetVersion", version);
if (Discourse.get("requiresRefresh")) {
// since we can do this transparently for people browsing the forum
// hold back the message a couple of hours
setTimeout(function () {
bootbox.confirm(I18n.lookup("assets_changed_confirm"), function (result) {
if (result) { document.location.reload(); }
});
}, 1000 * 60 * 120);
}
});
}
};

View File

@ -0,0 +1,15 @@
export default {
name: "banner",
after: "message-bus",
initialize: function () {
var banner = Em.Object.create(PreloadStore.get("banner"));
Discourse.set("banner", banner);
if (!Discourse.MessageBus) { return; }
Discourse.MessageBus.subscribe("/site/banner", function (banner) {
Discourse.set("banner", Em.Object.create(banner));
});
}
};

View File

@ -3,6 +3,7 @@
**/
export default {
name: "message-bus",
initialize: function() {
// We don't use the message bus in testing
@ -10,30 +11,6 @@ export default {
Discourse.MessageBus.alwaysLongPoll = Discourse.Environment === "development";
Discourse.MessageBus.start();
Discourse.MessageBus.subscribe("/global/asset-version", function(version){
Discourse.set("assetVersion", version);
if(Discourse.get("requiresRefresh")) {
// since we can do this transparently for people browsing the forum
// hold back the message a couple of hours
setTimeout(function() {
bootbox.confirm(I18n.lookup("assets_changed_confirm"), function(result){
if (result) {
document.location.reload();
}
});
}, 1000 * 60 * 120);
}
});
// initialize read-only mode and subscribe to updates via the message bus
Discourse.set("isReadOnly", Discourse.Site.currentProp("is_readonly"));
Discourse.MessageBus.subscribe("/site/read-only", function (enabled) {
Discourse.set("isReadOnly", enabled);
});
Discourse.KeyValueStore.init("discourse_", Discourse.MessageBus);
}
};

View File

@ -0,0 +1,18 @@
/**
Subscribe to "read-only" status change events via the Message Bus
**/
export default {
name: "read-only",
after: "message-bus",
initialize: function () {
// initialize read-only mode and subscribe to updates via the message bus
Discourse.set("isReadOnly", Discourse.Site.currentProp("is_readonly"));
if (!Discourse.MessageBus) { return; }
Discourse.MessageBus.subscribe("/site/read-only", function (enabled) {
Discourse.set("isReadOnly", enabled);
});
}
};