fix modules being patched multiple times
This commit is contained in:
parent
85bfa1e719
commit
25f101602d
1 changed files with 8 additions and 3 deletions
|
@ -229,12 +229,17 @@ function patchPush(webpackGlobal: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
handlePush.$$vencordOriginal = webpackGlobal.push;
|
handlePush.$$vencordOriginal = webpackGlobal.push;
|
||||||
|
// Webpack overwrites .push with its own push like so: `d.push = n.bind(null, d.push.bind(d));`
|
||||||
|
// it wraps the old push (`d.push.bind(d)`). this old push is in this case our handlePush.
|
||||||
|
// If we then repatched the new push, we would end up with recursive patching, which leads to our patches
|
||||||
|
// being applied multiple times.
|
||||||
|
// Thus, override bind to use the original push
|
||||||
|
handlePush.bind = (...args: unknown[]) => handlePush.$$vencordOriginal.bind(...args);
|
||||||
|
|
||||||
Object.defineProperty(webpackGlobal, "push", {
|
Object.defineProperty(webpackGlobal, "push", {
|
||||||
get: () => handlePush,
|
get: () => handlePush,
|
||||||
set(v) {
|
set(v) {
|
||||||
delete webpackGlobal.push;
|
handlePush.$$vencordOriginal = v;
|
||||||
webpackGlobal.push = v;
|
|
||||||
patchPush(webpackGlobal);
|
|
||||||
},
|
},
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue