From d54079b005e2b5157b660e87ef71ea57286ab92c Mon Sep 17 00:00:00 2001 From: Strencher <46447572+Strencher@users.noreply.github.com> Date: Fri, 22 Oct 2021 19:04:57 +0200 Subject: [PATCH] Fix for latest update on canary. (#1083) * Fix * Change to `require` --- renderer/src/modules/core.js | 14 +++++++++++++- renderer/src/modules/webpackmodules.js | 16 +++++++++++++--- renderer/src/ui/modals.js | 4 ++-- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/renderer/src/modules/core.js b/renderer/src/modules/core.js index dfd11914..371535c4 100644 --- a/renderer/src/modules/core.js +++ b/renderer/src/modules/core.js @@ -18,6 +18,7 @@ import IPC from "./ipc"; import LoadingIcon from "../loadingicon"; import Styles from "../styles/index.css"; import Editor from "./editor"; +import {WebpackModules} from "modules"; export default new class Core { async startup() { @@ -67,7 +68,7 @@ export default new class Core { for (const module in Builtins) { Builtins[module].initialize(); } - + this.polyfillWebpack(); Logger.log("Startup", "Loading Plugins"); // const pluginErrors = []; const pluginErrors = PluginManager.initialize(); @@ -90,6 +91,17 @@ export default new class Core { } } + polyfillWebpack() { + if (typeof(webpackJsonp) !== "undefined") return; + + window.webpackJsonp = []; + window.webpackJsonp.length = 10000; // In case plugins are waiting for that. + window.webpackJsonp.flat = () => window.webpackJsonp; + window.webpackJsonp.push = ([[], module, [[id]]]) => { + return module[id]({}, {}, WebpackModules.require); + }; + } + waitForGuilds() { // TODO: experiment with waiting for CONNECTION_OPEN event instead const GuildClasses = DiscordModules.GuildClasses; diff --git a/renderer/src/modules/webpackmodules.js b/renderer/src/modules/webpackmodules.js index 96466d4a..8b44b877 100644 --- a/renderer/src/modules/webpackmodules.js +++ b/renderer/src/modules/webpackmodules.js @@ -128,6 +128,7 @@ const protect = theModule => { }; export default class WebpackModules { + static get chunkName() {return "webpackChunkdiscord_app";} static find(filter, first = true) {return this.getModule(filter, first);} static findAll(filter) {return this.getModule(filter, false);} @@ -249,9 +250,18 @@ export default class WebpackModules { static get require() { if (this._require) return this._require; const id = "bd-webpackmodules"; - const __webpack_require__ = window.webpackJsonp.push([[], { - [id]: (module, exports, __internal_require__) => module.exports = __internal_require__ - }, [[id]]]); + let __webpack_require__ = undefined; + if (typeof (webpackJsonp) !== "undefined") { + __webpack_require__ = window.webpackJsonp.push([[], { + [id]: (module, exports, __internal_require__) => module.exports = __internal_require__ + }, [[id]]]); + } else if (typeof (window[this.chunkName]) !== "undefined") { + window[this.chunkName].push([[id], + {}, + __internal_require__ => __webpack_require__ = __internal_require__ + ]); + } + delete __webpack_require__.m[id]; delete __webpack_require__.c[id]; return this._require = __webpack_require__; diff --git a/renderer/src/ui/modals.js b/renderer/src/ui/modals.js index 4fe3d8aa..2ef0f48d 100644 --- a/renderer/src/ui/modals.js +++ b/renderer/src/ui/modals.js @@ -18,8 +18,8 @@ export default class Modals { static get FormTitle() {return WebpackModules.findByDisplayName("FormTitle");} static get TextElement() {return WebpackModules.getByProps("Sizes", "Weights");} static get ConfirmationModal() {return WebpackModules.findByDisplayName("ConfirmModal");} - static get Markdown() {return WebpackModules.findByDisplayName("Markdown");} - static get Buttons() {return WebpackModules.getByProps("ButtonColors");} + static get Markdown() {return WebpackModules.find(m => m.displayName === "Markdown" && m.rules);} + static get Buttons() {return WebpackModules.getByProps("ButtonSizes");} static default(title, content) { const modal = DOM.createElement(`