Backport get-owner API so plugins can use it safely
This commit is contained in:
parent
64b0a4eada
commit
f71c9758a9
@ -0,0 +1,3 @@
|
||||
export default function deprecated(msg) {
|
||||
console.warn(`DEPRECATION: ${msg}`);
|
||||
}
|
||||
32
app/assets/javascripts/discourse-common/lib/get-owner.js.es6
Normal file
32
app/assets/javascripts/discourse-common/lib/get-owner.js.es6
Normal file
@ -0,0 +1,32 @@
|
||||
import deprecated from 'discourse-common/lib/deprecated';
|
||||
|
||||
export function getOwner(obj) {
|
||||
if (Ember.getOwner) {
|
||||
return Ember.getOwner(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) => {
|
||||
return owner.lookupFactory ? owner.lookupFactory(...args) : owner._lookupFactory(...args);
|
||||
},
|
||||
|
||||
deprecateContainer(target) {
|
||||
Object.defineProperty(target, 'container', {
|
||||
get() {
|
||||
deprecated("Use `this.register` or `getOwner` instead of `this.container`");
|
||||
return register;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return register;
|
||||
}
|
||||
Reference in New Issue
Block a user