Robin Ward cbb27241c4
DEV: Make discourse-common an Ember addon. ()
This is to help with the migration to Ember CLI. In the current running
version of Discourse everything should be the same as before, just with
a few extra files that are not used. However, using Ember CLI this can
be installed as an Ember addon.

Co-Authored-By: Jarek Radosz <jradosz@gmail.com>
2020-04-29 12:18:21 -04:00

40 lines
1010 B
JavaScript

import deprecated from "discourse-common/lib/deprecated";
import { getOwner as emberGetOwner } from "@ember/application";
export function getOwner(obj) {
if (emberGetOwner) {
return emberGetOwner(obj) || Discourse.__container__;
}
return obj.container;
}
// `this.container` is deprecated, but we can still build a container-like
// object for components to use
export function getRegister(obj) {
const owner = getOwner(obj);
const register = {
lookup: (...args) => owner.lookup(...args),
lookupFactory: (...args) => {
if (owner.factoryFor) {
return owner.factoryFor(...args);
} else if (owner._lookupFactory) {
return owner._lookupFactory(...args);
}
},
deprecateContainer(target) {
Object.defineProperty(target, "container", {
get() {
deprecated(
"Use `this.register` or `getOwner` instead of `this.container`"
);
return register;
}
});
}
};
return register;
}