diff --git a/app/assets/javascripts/discourse/initializers/asset-version.js.es6 b/app/assets/javascripts/discourse/initializers/asset-version.js.es6 new file mode 100644 index 00000000000..53ffa00b259 --- /dev/null +++ b/app/assets/javascripts/discourse/initializers/asset-version.js.es6 @@ -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); + } + + }); + } +}; diff --git a/app/assets/javascripts/discourse/initializers/banner.js.es6 b/app/assets/javascripts/discourse/initializers/banner.js.es6 new file mode 100644 index 00000000000..a881ac3f0b1 --- /dev/null +++ b/app/assets/javascripts/discourse/initializers/banner.js.es6 @@ -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)); + }); + } +}; diff --git a/app/assets/javascripts/discourse/initializers/message-bus.js.es6 b/app/assets/javascripts/discourse/initializers/message-bus.js.es6 index b863ca899f7..0beab6db68d 100644 --- a/app/assets/javascripts/discourse/initializers/message-bus.js.es6 +++ b/app/assets/javascripts/discourse/initializers/message-bus.js.es6 @@ -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); } }; diff --git a/app/assets/javascripts/discourse/initializers/read-only.js.es6 b/app/assets/javascripts/discourse/initializers/read-only.js.es6 new file mode 100644 index 00000000000..0b99766b53a --- /dev/null +++ b/app/assets/javascripts/discourse/initializers/read-only.js.es6 @@ -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); + }); + } +};