diff --git a/Plugins/PluginRepo/PluginRepo.plugin.js b/Plugins/PluginRepo/PluginRepo.plugin.js index e174708d76..2fdfec4e7a 100644 --- a/Plugins/PluginRepo/PluginRepo.plugin.js +++ b/Plugins/PluginRepo/PluginRepo.plugin.js @@ -3,7 +3,7 @@ class PluginRepo { getName () {return "PluginRepo";} - getVersion () {return "1.7.6";} + getVersion () {return "1.7.7";} getAuthor () {return "DevilBro";} @@ -11,7 +11,7 @@ class PluginRepo { initConstructor () { this.changelog = { - "fixed":[["Loading Issues","Fixed loading issues with Zerthox's plugins, last time"]] + "improved":[["Loading Speed","Increased Loading Speed"]] }; this.patchModules = { @@ -743,65 +743,79 @@ class PluginRepo { let name = body.replace(new RegExp("\\s*\:\\s*", "g"), ":").split('"name":"'); if (name.length > 1) { name = name[1].split('"')[0]; - webview.getWebContents().executeJavaScript(body).then(() => { - webview.getWebContents().executeJavaScript(` - try { - var getString = (obj) => { - var string = ""; - if (typeof obj == "string") string = obj; - else if (obj && obj.props) { - if (typeof obj.props.children == "string") string = obj.props.children; - else if (Array.isArray(obj.props.children)) for (let c of obj.props.children) string += typeof c == "string" ? c : getString(c); + webview.getWebContents().executeJavaScript(` + try { + ${body} + var getString = function (obj) { + var string = ""; + if (typeof obj == "string") string = obj; + else if (obj && obj.props) { + if (typeof obj.props.children == "string") string = obj.props.children; + else if (Array.isArray(obj.props.children)) for (let c of obj.props.children) string += typeof c == "string" ? c : getString(c); + } + return string; + }; + var WebModulesFind = function (filter) { + const id = "PluginRepo-WebModules"; + const req = typeof(global.window.webpackJsonp) == "function" ? global.window.webpackJsonp([], {[id]: (module, exports, req) => exports.default = req}, [id]).default : global.window.webpackJsonp.push([[], {[id]: (module, exports, req) => module.exports = req}, [[id]]]); + delete req.m[id]; + delete req.c[id]; + for (let m in req.c) { + if (req.c.hasOwnProperty(m)) { + var module = req.c[m].exports; + if (module && module.__esModule && module.default && filter(module.default)) return module.default; + if (module && filter(module)) return module; } - return string; - }; - var WebModulesFind = (filter) => { - const id = "PluginRepo-WebModules"; - const req = typeof(global.window.webpackJsonp) == "function" ? global.window.webpackJsonp([], {[id]: (module, exports, req) => exports.default = req}, [id]).default : global.window.webpackJsonp.push([[], {[id]: (module, exports, req) => module.exports = req}, [[id]]]); - delete req.m[id]; - delete req.c[id]; - for (let m in req.c) { - if (req.c.hasOwnProperty(m)) { - var module = req.c[m].exports; - if (module && module.__esModule && module.default && filter(module.default)) return module.default; - if (module && filter(module)) return module; - } - } - }; - var WebModulesFindByProperties = (properties) => { - return WebModulesFind(module => properties.every(prop => module[prop] !== undefined)); - }; - var React = WebModulesFindByProperties(['createElement', 'cloneElement']); - var ReactDOM = WebModulesFindByProperties(['render', 'findDOMNode']); - global.BDV2 = {}; - global.BDV2.react = React; - global.BDV2.reactDom = ReactDOM; - global.BdApi = {}; - global.BdApi.React = React; - global.BdApi.ReactDOM = ReactDOM; - var p = new ` + name + `(); - var data = { - "getName":getString(p.getName()), - "getAuthor":getString(p.getAuthor()), - "getVersion":getString(p.getVersion()), - "getDescription":getString(p.getDescription()) - }; - Promise.resolve(data); - } - catch (err) { - Promise.resolve(null); - }` - ).then(plugin => { - if (plugin) { - plugin.url = url; - this.loadedPlugins[url] = plugin; - var instPlugin = window.bdplugins[plugin.getName] ? window.bdplugins[plugin.getName].plugin : null; - if (instPlugin && this.getString(instPlugin.getAuthor()).toUpperCase() == plugin.getAuthor.toUpperCase() && this.getString(instPlugin.getVersion()) != plugin.getVersion) outdated++; - } - webview.getWebContents().reload(); - webviewrunning = false; - runInWebview(); - }); + } + }; + var WebModulesFindByProperties = function (properties) { + properties = Array.isArray(properties) ? properties : Array.from(arguments); + var module = WebModulesFind(module => properties.every(prop => module[prop] !== undefined)); + if (!module) { + module = {}; + for (let property of properties) module[property] = property; + } + return module; + }; + var WebModulesFindByName = function (name) { + return WebModulesFind(module => module.displayName === name); + }; + var React = WebModulesFindByProperties('createElement', 'cloneElement'); + var ReactDOM = WebModulesFindByProperties('render', 'findDOMNode'); + global.BDV2 = {}; + global.BDV2.react = React; + global.BDV2.reactDom = ReactDOM; + global.BDV2.WebpackModules = {}; + global.BDV2.WebpackModules.find = WebModulesFind; + global.BDV2.WebpackModules.findByUniqueProperties = WebModulesFindByProperties; + global.BDV2.WebpackModules.findByDisplayName = WebModulesFindByName; + global.BdApi = {}; + global.BdApi.React = React; + global.BdApi.ReactDOM = ReactDOM; + global.BdApi.findModule = WebModulesFind; + global.BdApi.findModuleByProps = WebModulesFindByProperties; + var p = new ${name}(); + var data = { + "getName":getString(p.getName()), + "getAuthor":getString(p.getAuthor()), + "getVersion":getString(p.getVersion()), + "getDescription":getString(p.getDescription()) + }; + Promise.resolve(data); + } + catch (err) { + Promise.resolve(err); + }` + ).then(plugin => { + if (BDFDB.isObject(plugin)) { + plugin.url = url; + this.loadedPlugins[url] = plugin; + var instPlugin = window.bdplugins[plugin.getName] ? window.bdplugins[plugin.getName].plugin : null; + if (instPlugin && this.getString(instPlugin.getAuthor()).toUpperCase() == plugin.getAuthor.toUpperCase() && this.getString(instPlugin.getVersion()) != plugin.getVersion) outdated++; + } + webview.getWebContents().reload(); + webviewrunning = false; + runInWebview(); }); } }