diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js index 1a34d1927..41d513fcc 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js @@ -739,7 +739,12 @@ RED.palette.editor = (function() { updateAllowList = RED.utils.parseModuleList(updateAllowList); updateDenyList = RED.utils.parseModuleList(updateDenyList); - catalogues = RED.settings.theme('palette.catalogues') || ['https://catalogue.nodered.org/catalogue.json'] + catalogues = RED.settings.theme('palette.catalogues') || ['https://catalogue.nodered.org/catalogue.json']; + + if (RED.settings.get("editorTheme.palette.checkForUpdates", false) === true) { + // Enable checking for updates triggered every 30 minutes + initCheckForUpdatesInterval(); + } createSettingsPane(); @@ -923,6 +928,35 @@ RED.palette.editor = (function() { }) } + /** + * Initializes the check for updates triggered every 30 minutes. + * This interval is based on the cumulative active window time. + */ + function initCheckForUpdatesInterval() { + let activeTime = 0, lastActiveTime = Date.now(); + const INTERVAL = 30 * 60; // 30min + + document.addEventListener("visibilitychange", function () { + if (document.visibilityState === "visible") { + lastActiveTime = Date.now(); + } else { + activeTime += (Date.now() - lastActiveTime) / 1000; + } + }); + + setInterval(function () { + if (document.visibilityState === "visible") { + activeTime += (Date.now() - lastActiveTime) / 1000; + lastActiveTime = Date.now(); + + if (activeTime >= INTERVAL) { + activeTime = 0; + refreshCatalogues(); + } + } + }, 1000 * 60); // refresh every minute + } + function getSettingsPane() { initInstallTab(); editorTabs.activateTab('nodes'); diff --git a/packages/node_modules/node-red/settings.js b/packages/node_modules/node-red/settings.js index 39e6a6b47..1e03d6269 100644 --- a/packages/node_modules/node-red/settings.js +++ b/packages/node_modules/node-red/settings.js @@ -433,6 +433,11 @@ module.exports = { * If not set, the following default order is used: */ //categories: ['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'], + + /** + * To enable checking for updates every 30min when the editor is open and active. + */ + checkForUpdates: false, }, projects: {