This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/app/initializers/inject-objects.js
David Taylor 03b7d71827
DEV: Ensure that Discourse global is available for widget init (#15862)
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.
2022-02-08 10:45:36 +00:00

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;
},
});
}
},
};