From c74b22c304998e3f077058c79a1294bc030503de Mon Sep 17 00:00:00 2001 From: selango Date: Thu, 13 Feb 2020 11:44:42 +0530 Subject: [PATCH] Resolve #7874 - stop too many fetch calls to docmanager-extension on first load --- packages/docmanager-extension/src/index.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/docmanager-extension/src/index.ts b/packages/docmanager-extension/src/index.ts index 45cfbe76d48b..7e38d074994b 100644 --- a/packages/docmanager-extension/src/index.ts +++ b/packages/docmanager-extension/src/index.ts @@ -241,9 +241,23 @@ ${fileTypes}`; return { ...plugin, schema }; } }); + + //callback to registry change that ensures not to invoke reload method when there is already a promise that is pending + let reloadSettingsRegistry = () => { + let promisePending = false; + + return async () => { + if(!promisePending) { + promisePending = true; + await settingRegistry.reload(pluginId); + promisePending = false; + } + }; + }; + // If the document registry gains or loses a factory or file type, // regenerate the settings description with the available options. - registry.changed.connect(() => settingRegistry.reload(pluginId)); + registry.changed.connect(reloadSettingsRegistry()); return docManager; }