Skip to content

Commit 56825e3

Browse files
authored
Allow refreshBlocks() to specify extension (#228)
1 parent b900a37 commit 56825e3

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/extension-support/extension-manager.js

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -277,19 +277,25 @@ class ExtensionManager {
277277

278278
/**
279279
* Regenerate blockinfo for any loaded extensions
280+
* @param {string} [optExtensionId] Optional extension ID for refreshing
280281
* @returns {Promise} resolved once all the extensions have been reinitialized
281282
*/
282-
refreshBlocks () {
283-
const allPromises = Array.from(this._loadedExtensions.values()).map(serviceName =>
284-
dispatch.call(serviceName, 'getInfo')
285-
.then(info => {
286-
info = this._prepareExtensionInfo(serviceName, info);
287-
dispatch.call('runtime', '_refreshExtensionPrimitives', info);
288-
})
289-
.catch(e => {
290-
log.error('Failed to refresh built-in extension primitives', e);
291-
})
292-
);
283+
refreshBlocks (optExtensionId) {
284+
const refresh = serviceName => dispatch.call(serviceName, 'getInfo')
285+
.then(info => {
286+
info = this._prepareExtensionInfo(serviceName, info);
287+
dispatch.call('runtime', '_refreshExtensionPrimitives', info);
288+
})
289+
.catch(e => {
290+
log.error('Failed to refresh built-in extension primitives', e);
291+
});
292+
if (optExtensionId) {
293+
if (!this._loadedExtensions.has(optExtensionId)) {
294+
return Promise.reject(new Error(`Unknown extension: ${optExtensionId}`));
295+
}
296+
return refresh(this._loadedExtensions.get(optExtensionId));
297+
}
298+
const allPromises = Array.from(this._loadedExtensions.values()).map(refresh);
293299
return Promise.all(allPromises);
294300
}
295301

0 commit comments

Comments
 (0)