FEATURE: allow plugins to modify class statics
Adds `modifyClassStatic` to plugin api which can be used to amend static methods on a class
This commit is contained in:
parent
f08ff84c5c
commit
7dd68e64d9
|
@ -27,7 +27,7 @@ import { registerCustomAvatarHelper } from 'discourse/helpers/user-avatar';
|
||||||
import { disableNameSuppression } from 'discourse/widgets/poster-name';
|
import { disableNameSuppression } from 'discourse/widgets/poster-name';
|
||||||
|
|
||||||
// If you add any methods to the API ensure you bump up this number
|
// If you add any methods to the API ensure you bump up this number
|
||||||
const PLUGIN_API_VERSION = '0.8.20';
|
const PLUGIN_API_VERSION = '0.8.21';
|
||||||
|
|
||||||
class PluginApi {
|
class PluginApi {
|
||||||
constructor(version, container) {
|
constructor(version, container) {
|
||||||
|
@ -44,20 +44,7 @@ class PluginApi {
|
||||||
return this.container.lookup('current-user:main');
|
return this.container.lookup('current-user:main');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
_resolveClass(resolverName, opts) {
|
||||||
* Allows you to overwrite or extend methods in a class.
|
|
||||||
*
|
|
||||||
* For example:
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
* api.modifyClass('controller:composer', {
|
|
||||||
* actions: {
|
|
||||||
* newActionHere() { }
|
|
||||||
* }
|
|
||||||
* });
|
|
||||||
* ```
|
|
||||||
**/
|
|
||||||
modifyClass(resolverName, changes, opts) {
|
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
|
|
||||||
if (this.container.cache[resolverName]) {
|
if (this.container.cache[resolverName]) {
|
||||||
|
@ -72,7 +59,48 @@ class PluginApi {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
klass.class.reopen(changes);
|
return klass;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows you to overwrite or extend methods in a class.
|
||||||
|
*
|
||||||
|
* For example:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* api.modifyClass('controller:composer', {
|
||||||
|
* actions: {
|
||||||
|
* newActionHere() { }
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
**/
|
||||||
|
modifyClass(resolverName, changes, opts) {
|
||||||
|
|
||||||
|
const klass = this._resolveClass(resolverName, opts);
|
||||||
|
if (klass) {
|
||||||
|
klass.class.reopen(changes);
|
||||||
|
}
|
||||||
|
return klass;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows you to overwrite or extend static methods in a class.
|
||||||
|
*
|
||||||
|
* For example:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* api.modifyClassStatic('controller:composer', {
|
||||||
|
* superFinder: function() { return []; }
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
**/
|
||||||
|
modifyClassStatic(resolverName, changes, opts) {
|
||||||
|
|
||||||
|
const klass = this._resolveClass(resolverName, opts);
|
||||||
|
if (klass) {
|
||||||
|
klass.class.reopenClass(changes);
|
||||||
|
}
|
||||||
return klass;
|
return klass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue