From cf32d45f66eab1206612127db3719fea5b663611 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sun, 8 Oct 2023 21:56:40 +0200 Subject: [PATCH] Added plugin live view. --- .gitignore | 1 + src/package.json | 1 + src/static/js/pluginfw/installer.js | 29 ++++++++++++++++------------- src/static/js/pluginfw/plugins.js | 2 ++ 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index e2f0383a2..6c94cbad2 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ out/ /src/bin/convertSettings.json /src/bin/etherpad-1.deb /src/bin/node.exe +plugin_packages \ No newline at end of file diff --git a/src/package.json b/src/package.json index 14d13aa8d..b64e2f231 100644 --- a/src/package.json +++ b/src/package.json @@ -56,6 +56,7 @@ "npm": "^6.14.18", "openapi-backend": "^5.10.5", "proxy-addr": "^2.0.7", + "live-plugin-manager": "^0.18.1", "rate-limiter-flexible": "^3.0.0", "rehype": "^13.0.1", "rehype-minify-whitespace": "^6.0.0", diff --git a/src/static/js/pluginfw/installer.js b/src/static/js/pluginfw/installer.js index 6c5784b00..c283faff8 100644 --- a/src/static/js/pluginfw/installer.js +++ b/src/static/js/pluginfw/installer.js @@ -6,9 +6,12 @@ const hooks = require('./hooks'); const runCmd = require('../../../node/utils/run_cmd'); const settings = require('../../../node/utils/Settings'); const axios = require('axios'); - +const {PluginManager} = require('live-plugin-manager'); const logger = log4js.getLogger('plugins'); +exports.manager = new PluginManager(); + + const onAllTasksFinished = async () => { settings.reloadSettings(); await hooks.aCallAll('loadSettings', {settings}); @@ -72,19 +75,19 @@ exports.getAvailablePlugins = (maxCacheAge) => { const nowTimestamp = Math.round(Date.now() / 1000); return new Promise(async (resolve, reject) => { - // check cache age before making any request - if (exports.availablePlugins && maxCacheAge && (nowTimestamp - cacheTimestamp) <= maxCacheAge) { - return resolve(exports.availablePlugins); - } + // check cache age before making any request + if (exports.availablePlugins && maxCacheAge && (nowTimestamp - cacheTimestamp) <= maxCacheAge) { + return resolve(exports.availablePlugins); + } - await axios.get('https://static.etherpad.org/plugins.json') - .then(pluginsLoaded => { - exports.availablePlugins = pluginsLoaded.data; - cacheTimestamp = nowTimestamp; - resolve(exports.availablePlugins); - }) - }) -} + await axios.get('https://static.etherpad.org/plugins.json') + .then((pluginsLoaded) => { + exports.availablePlugins = pluginsLoaded.data; + cacheTimestamp = nowTimestamp; + resolve(exports.availablePlugins); + }); + }); +}; exports.search = (searchTerm, maxCacheAge) => exports.getAvailablePlugins(maxCacheAge).then( diff --git a/src/static/js/pluginfw/plugins.js b/src/static/js/pluginfw/plugins.js index ec3cfaa92..e8b7cb326 100644 --- a/src/static/js/pluginfw/plugins.js +++ b/src/static/js/pluginfw/plugins.js @@ -8,6 +8,7 @@ const runCmd = require('../../../node/utils/run_cmd'); const tsort = require('./tsort'); const pluginUtils = require('./shared'); const defs = require('./plugin_defs'); +const {manager} = require('./installer'); const logger = log4js.getLogger('plugins'); @@ -124,6 +125,7 @@ exports.getPackages = async () => { }; const loadPlugin = async (packages, pluginName, plugins, parts) => { + console.log('Plugins', manager.list()); const pluginPath = path.resolve(packages[pluginName].path, 'ep.json'); try { const data = await fs.readFile(pluginPath);