DEV: Import `MessageBus` from `message-bus-client` instead of globals

DEV: Import MessageBus from message-bus-client instead of globals

diff --git a/Gemfile.lock b/Gemfile.lock
index 967f197..f9ecf2a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -183,7 +183,7 @@ GEM
       mini_mime (>= 0.1.1)
     maxminddb (0.1.22)
     memory_profiler (0.9.14)
-    message_bus (3.2.0)
+    message_bus (3.3.0)
       rack (>= 1.1.3)
     method_source (1.0.0)
     mini_mime (1.0.2)
diff --git a/app/assets/javascripts/admin/models/backup.js b/app/assets/javascripts/admin/models/backup.js
index 2c41e1e..45727a2 100644
--- a/app/assets/javascripts/admin/models/backup.js
+++ b/app/assets/javascripts/admin/models/backup.js
@@ -2,6 +2,7 @@ import I18n from "I18n";
 import { ajax } from "discourse/lib/ajax";
 import { extractError } from "discourse/lib/ajax-error";
 import EmberObject from "@ember/object";
+import MessageBus from "message-bus-client";
 
 const Backup = EmberObject.extend({
   destroy() {
@@ -11,7 +12,7 @@ const Backup = EmberObject.extend({
   restore() {
     return ajax("/admin/backups/" + this.filename + "/restore", {
       type: "POST",
-      data: { client_id: window.MessageBus.clientId }
+      data: { client_id: MessageBus.clientId }
     });
   }
 });
@@ -38,7 +39,7 @@ Backup.reopenClass({
       type: "POST",
       data: {
         with_uploads: withUploads,
-        client_id: window.MessageBus.clientId
+        client_id: MessageBus.clientId
       }
     }).then(result => {
       if (!result.success) {
diff --git a/app/assets/javascripts/discourse-shims.js b/app/assets/javascripts/discourse-shims.js
new file mode 100644
index 0000000..f790ed9
--- /dev/null
+++ b/app/assets/javascripts/discourse-shims.js
@@ -0,0 +1,18 @@
+// Allow us to import Ember
+define("ember", ["exports"], function(__exports__) {
+  // eslint-disable-next-line no-console
+  console.warn(
+    [
+      "Deprecation notice:",
+      "Use specific `@ember/*` imports instead of `ember`",
+      "(deprecated since Discourse 2.4.0)",
+      "(removal in Discourse 2.5.0)"
+    ].join(" ")
+  );
+
+  __exports__.default = Ember;
+});
+
+define("message-bus-client", ["exports"], function(__exports__) {
+  __exports__.default = window.MessageBus;
+});
diff --git a/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js b/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js
index 30d1fb4..045798e 100644
--- a/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js
+++ b/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js
@@ -9,6 +9,7 @@ import TopicTrackingState, {
 import ScreenTrack from "discourse/lib/screen-track";
 import Site from "discourse/models/site";
 import User from "discourse/models/user";
+import MessageBus from "message-bus-client";
 
 const ALL_TARGETS = ["controller", "component", "route", "model", "adapter"];
 
@@ -27,8 +28,7 @@ export default {
       ALL_TARGETS.forEach(t => app.inject(t, "store", "service:store"));
     }
 
-    const messageBus = window.MessageBus;
-    app.register("message-bus:main", messageBus, { instantiate: false });
+    app.register("message-bus:main", MessageBus, { instantiate: false });
 
     ALL_TARGETS.concat("service").forEach(t =>
       app.inject(t, "messageBus", "message-bus:main")
@@ -39,7 +39,7 @@ export default {
     app.currentUser = currentUser;
 
     const topicTrackingState = TopicTrackingState.create({
-      messageBus,
+      messageBus: MessageBus,
       currentUser
     });
     app.register("topic-tracking-state:main", topicTrackingState, {
diff --git a/app/assets/javascripts/ember-shim.js b/app/assets/javascripts/ember-shim.js
deleted file mode 100644
index 1837ae1..0000000
--- a/app/assets/javascripts/ember-shim.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// Allow us to import Ember
-define("ember", ["exports"], function(__exports__) {
-  // eslint-disable-next-line no-console
-  console.warn(
-    [
-      "Deprecation notice:",
-      "Use specific `@ember/*` imports instead of `ember`",
-      "(deprecated since Discourse 2.4.0)",
-      "(removal in Discourse 2.5.0)"
-    ].join(" ")
-  );
-
-  __exports__.default = Ember;
-});
diff --git a/app/assets/javascripts/ember_jquery.js b/app/assets/javascripts/ember_jquery.js
index be7d57d..51f31d5 100644
--- a/app/assets/javascripts/ember_jquery.js
+++ b/app/assets/javascripts/ember_jquery.js
@@ -3,4 +3,3 @@
 //= require jquery
 //= require ember_include
 //= require discourse-loader
-//= require ember-shim
diff --git a/app/assets/javascripts/vendor.js b/app/assets/javascripts/vendor.js
index 64119c4..5efe954 100644
--- a/app/assets/javascripts/vendor.js
+++ b/app/assets/javascripts/vendor.js
@@ -29,3 +29,4 @@
 //= require virtual-dom
 //= require virtual-dom-amd
 //= require intersection-observer
+//= require discourse-shims
diff --git a/app/assets/javascripts/wizard/test/test_helper.js b/app/assets/javascripts/wizard/test/test_helper.js
index c04a59f..953ba72 100644
--- a/app/assets/javascripts/wizard/test/test_helper.js
+++ b/app/assets/javascripts/wizard/test/test_helper.js
@@ -12,7 +12,7 @@
 //= require ember-template-compiler
 //= require qunit/qunit/qunit
 //= require ember-qunit
-//= require ember-shim
+//= require discourse-shims
 //= require wizard-application
 //= require wizard-vendor
 //= require helpers/assertions
diff --git a/test/javascripts/acceptance/topic-discovery-test.js b/test/javascripts/acceptance/topic-discovery-test.js
index b298918..262a50c 100644
--- a/test/javascripts/acceptance/topic-discovery-test.js
+++ b/test/javascripts/acceptance/topic-discovery-test.js
@@ -1,4 +1,6 @@
 import { acceptance } from "helpers/qunit-helpers";
+import MessageBus from "message-bus-client";
+
 acceptance("Topic Discovery", {
   settings: {
     show_pinned_excerpt_desktop: true
@@ -85,7 +87,7 @@ QUnit.test("Live update unread state", async assert => {
   );
 
   // Mimic a messagebus message
-  window.MessageBus.callbacks.filterBy("channel", "/latest").map(c =>
+  MessageBus.callbacks.filterBy("channel", "/latest").map(c =>
     c.func({
       message_type: "read",
       topic_id: 11995,
diff --git a/test/javascripts/test_helper.js b/test/javascripts/test_helper.js
index 5646f98..5e7c155 100644
--- a/test/javascripts/test_helper.js
+++ b/test/javascripts/test_helper.js
@@ -17,7 +17,7 @@
 
 // Stuff we need to load first
 //= require vendor
-//= require ember-shim
+//= require discourse-shims
 //= require pretty-text-bundle
 //= require markdown-it-bundle
 //= require application
@@ -55,8 +55,10 @@ sinon.config = {
 
 window.inTestEnv = true;
 
+let MessageBus = require("message-bus-client").default;
+
 // Stop the message bus so we don't get ajax calls
-window.MessageBus.stop();
+MessageBus.stop();
 
 // Trick JSHint into allow document.write
 var d = document;
@@ -191,7 +193,7 @@ QUnit.testDone(function() {
     window.Discourse.__container__
   );
 
-  window.MessageBus.unsubscribe("*");
+  MessageBus.unsubscribe("*");
   delete window.server;
   window.Mousetrap.reset();
 });

GitHub sha: 9dddbcc0