Under ember-cli, we rely on the `ember-export-application-global` addon to make `window.Discourse` available. This happens in an initializer. Previously this inititalizer would run after `auto-load-modules`, and so any widget/helper modules would not be able to access it. This commit sets some `after` parameters on the `auto-load-modules` and `inject-objects` initializers to ensure that `export-application-global` is run first.
55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import { setDefaultOwner } from "discourse-common/lib/get-owner";
|
|
import { isLegacyEmber } from "discourse-common/config/environment";
|
|
import User from "discourse/models/user";
|
|
import Site from "discourse/models/site";
|
|
import deprecated from "discourse-common/lib/deprecated";
|
|
|
|
export default {
|
|
name: "inject-objects",
|
|
after: isLegacyEmber() ? null : "export-application-global",
|
|
initialize(container, app) {
|
|
// This is required for Ember CLI tests to work
|
|
setDefaultOwner(app.__container__);
|
|
|
|
// Backwards compatibility for Discourse.SiteSettings and Discourse.User
|
|
if (!isLegacyEmber()) {
|
|
Object.defineProperty(app, "SiteSettings", {
|
|
get() {
|
|
deprecated(
|
|
`use injected siteSettings instead of Discourse.SiteSettings`,
|
|
{
|
|
since: "2.8",
|
|
dropFrom: "2.9",
|
|
}
|
|
);
|
|
return container.lookup("site-settings:main");
|
|
},
|
|
});
|
|
Object.defineProperty(app, "User", {
|
|
get() {
|
|
deprecated(
|
|
`import discourse/models/user instead of using Discourse.User`,
|
|
{
|
|
since: "2.8",
|
|
dropFrom: "2.9",
|
|
}
|
|
);
|
|
return User;
|
|
},
|
|
});
|
|
Object.defineProperty(app, "Site", {
|
|
get() {
|
|
deprecated(
|
|
`import discourse/models/site instead of using Discourse.Site`,
|
|
{
|
|
since: "2.8",
|
|
dropFrom: "2.9",
|
|
}
|
|
);
|
|
return Site;
|
|
},
|
|
});
|
|
}
|
|
},
|
|
};
|