From 4a569122c52a5ce141faeffd84beb0bc2d9ab9e0 Mon Sep 17 00:00:00 2001 From: FurryR Date: Sun, 6 Oct 2024 19:39:48 +0800 Subject: [PATCH] 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); }