From 008891c9e2764fe4863885f446da29aa968da47a Mon Sep 17 00:00:00 2001 From: Steve0Greatness Date: Tue, 24 Jun 2025 16:07:02 -0700 Subject: [PATCH 1/2] Update refreshBlocks for upstream compat. --- src/extension-support/extension-manager.js | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/extension-support/extension-manager.js b/src/extension-support/extension-manager.js index a78fa86691..fd28eae1df 100644 --- a/src/extension-support/extension-manager.js +++ b/src/extension-support/extension-manager.js @@ -555,20 +555,29 @@ class ExtensionManager { /** * Regenerate blockinfo for any loaded extensions + * @param {string} [extension] optional extension id * @returns {Promise} resolved once all the extensions have been reinitialized */ - refreshBlocks() { - const allPromises = Array.from(this._loadedExtensions.values()).map(serviceName => - dispatch.call(serviceName, 'getInfo') + refreshBlocks(extension) { + const refresh_service = service => + dispatch.call(service, 'getInfo') .then(info => { - info = this._prepareExtensionInfo(serviceName, info); + info = this._prepareExtensionInfo(service, info); dispatch.call('runtime', '_refreshExtensionPrimitives', info); }) .catch(e => { log.error(`Failed to refresh built-in extension primitives: ${e}`); - }) - ); - return Promise.all(allPromises); + }); + + if (!extension) { + const all_services = Array.from(this._loadedExtensions.values()).map(refresh_service); + return Promise.all(all_services); + } + if (!this._loadedExtensions.has(extension)) { + return Promise.reject(new Error(`Extension ${extension} doesn't exist`)); + } + + return refresh_service(this._loadedExtensions.get(extension)); } prepareSwap(id) { From 2e4ee3c30a029bc1d95ed3dd62ae6f730f49950d Mon Sep 17 00:00:00 2001 From: Steve0Greatness Date: Tue, 24 Jun 2025 16:15:11 -0700 Subject: [PATCH 2/2] Also do for dynamic category refreshing --- src/extension-support/extension-manager.js | 29 ++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/extension-support/extension-manager.js b/src/extension-support/extension-manager.js index fd28eae1df..ad16ea7cf3 100644 --- a/src/extension-support/extension-manager.js +++ b/src/extension-support/extension-manager.js @@ -534,27 +534,36 @@ class ExtensionManager { } /** - * Regenerate blockinfo for all loaded dynamic extensions + * Regenerate blockinfo for all (or one) loaded dynamic extensions + * @param {string} [extension] optional extension id * @returns {Promise} resolved once all the extensions have been reinitialized */ - refreshDynamicCategorys() { - if (!this._loadedExtensions) return Promise.reject('_loadedExtensions is not readable yet'); - const allPromises = Array.from(this._loadedExtensions.values()).map(serviceName => - dispatch.call(serviceName, 'getInfo') + refreshDynamicCategorys(extension) { + const refresh_service = service => + dispatch.call(service, 'getInfo') .then(info => { - info = this._prepareExtensionInfo(serviceName, info); + info = this._prepareExtensionInfo(service, info); if (!info.isDynamic) return; dispatch.call('runtime', '_refreshExtensionPrimitives', info); }) .catch(e => { log.error(`Failed to refresh built-in extension primitives: ${e}`); }) - ); - return Promise.all(allPromises); + + if (!this._loadedExtensions) return Promise.reject('_loadedExtensions is not readable yet'); + if (!extension) { + const all_services = Array.from(this._loadedExtensions.values()).map(refresh_service); + return Promise.all(all_services); + } + if (!this._loadedExtensions.has(extension)) { + return Promise.reject(new Error(`Unknown extension: ${extension}`)); + } + + return refresh_service(this._loadedExtensions.get(extension)); } /** - * Regenerate blockinfo for any loaded extensions + * Regenerate blockinfo for all (or one) loaded extensions * @param {string} [extension] optional extension id * @returns {Promise} resolved once all the extensions have been reinitialized */ @@ -574,7 +583,7 @@ class ExtensionManager { return Promise.all(all_services); } if (!this._loadedExtensions.has(extension)) { - return Promise.reject(new Error(`Extension ${extension} doesn't exist`)); + return Promise.reject(new Error(`Unknown extension: ${extension}`)); } return refresh_service(this._loadedExtensions.get(extension));