discourse/app/assets/javascripts/discourse-common/addon/lib/get-owner.js
Robin Ward cbb27241c4
DEV: Make discourse-common an Ember addon. (#9578)
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;
}