From 4a569122c52a5ce141faeffd84beb0bc2d9ab9e0 Mon Sep 17 00:00:00 2001 From: FurryR Date: Sun, 6 Oct 2024 19:39:48 +0800 Subject: [PATCH 1/3] Allow `refreshBlocks()` to specify extension --- src/extension-support/extension-manager.js | 25 ++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/extension-support/extension-manager.js b/src/extension-support/extension-manager.js index a092af35482..93cc8957ed9 100644 --- a/src/extension-support/extension-manager.js +++ b/src/extension-support/extension-manager.js @@ -277,19 +277,22 @@ class ExtensionManager { /** * Regenerate blockinfo for any loaded extensions + * @param {string=} optExtensionId Optional extension ID for refreshing * @returns {Promise} resolved once all the extensions have been reinitialized */ - refreshBlocks () { - const allPromises = Array.from(this._loadedExtensions.values()).map(serviceName => - dispatch.call(serviceName, 'getInfo') - .then(info => { - info = this._prepareExtensionInfo(serviceName, info); - dispatch.call('runtime', '_refreshExtensionPrimitives', info); - }) - .catch(e => { - log.error('Failed to refresh built-in extension primitives', e); - }) - ); + refreshBlocks (optExtensionId) { + const refresh = serviceName => dispatch.call(serviceName, 'getInfo') + .then(info => { + info = this._prepareExtensionInfo(serviceName, info); + dispatch.call('runtime', '_refreshExtensionPrimitives', info); + }) + .catch(e => { + log.error('Failed to refresh built-in extension primitives', e); + }); + if (optExtensionId && this._loadedExtensions.has(optExtensionId)) { + return refresh(this._loadedExtensions.get(optExtensionId)); + } + const allPromises = Array.from(this._loadedExtensions.values()).map(refresh); return Promise.all(allPromises); } From 0b9c4bdf980862a3495dbab3f8c5ef41551b9969 Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Wed, 25 Dec 2024 22:49:39 -0600 Subject: [PATCH 2/3] explicit error --- src/extension-support/extension-manager.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/extension-support/extension-manager.js b/src/extension-support/extension-manager.js index 93cc8957ed9..966ffa8ea19 100644 --- a/src/extension-support/extension-manager.js +++ b/src/extension-support/extension-manager.js @@ -277,7 +277,7 @@ class ExtensionManager { /** * Regenerate blockinfo for any loaded extensions - * @param {string=} optExtensionId Optional extension ID for refreshing + * @param {string} [optExtensionId] Optional extension ID for refreshing * @returns {Promise} resolved once all the extensions have been reinitialized */ refreshBlocks (optExtensionId) { @@ -289,7 +289,10 @@ class ExtensionManager { .catch(e => { log.error('Failed to refresh built-in extension primitives', e); }); - if (optExtensionId && this._loadedExtensions.has(optExtensionId)) { + if (optExtensionId) { + if (!this._loadedExtensions.has(optExtensionId)) { + throw new Error(`Unknown extension: ${optExtensionId}`); + } return refresh(this._loadedExtensions.get(optExtensionId)); } const allPromises = Array.from(this._loadedExtensions.values()).map(refresh); From 45b7b5fabd61512e871e9d360f7e9be9cbcd631c Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Wed, 25 Dec 2024 22:52:50 -0600 Subject: [PATCH 3/3] return promise not throw --- src/extension-support/extension-manager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension-support/extension-manager.js b/src/extension-support/extension-manager.js index 966ffa8ea19..5268ad938e8 100644 --- a/src/extension-support/extension-manager.js +++ b/src/extension-support/extension-manager.js @@ -291,7 +291,7 @@ class ExtensionManager { }); if (optExtensionId) { if (!this._loadedExtensions.has(optExtensionId)) { - throw new Error(`Unknown extension: ${optExtensionId}`); + return Promise.reject(new Error(`Unknown extension: ${optExtensionId}`)); } return refresh(this._loadedExtensions.get(optExtensionId)); }