From c74b22c304998e3f077058c79a1294bc030503de Mon Sep 17 00:00:00 2001 From: selango Date: Thu, 13 Feb 2020 11:44:42 +0530 Subject: [PATCH 1/2] 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; } From 050d102e40a0973134533c47ff07374f024adbb6 Mon Sep 17 00:00:00 2001 From: selango Date: Thu, 13 Feb 2020 12:26:38 +0530 Subject: [PATCH 2/2] Fix linting issues #7874 --- packages/docmanager-extension/src/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/docmanager-extension/src/index.ts b/packages/docmanager-extension/src/index.ts index 7e38d074994b..a73280981442 100644 --- a/packages/docmanager-extension/src/index.ts +++ b/packages/docmanager-extension/src/index.ts @@ -242,16 +242,16 @@ ${fileTypes}`; } }); - //callback to registry change that ensures not to invoke reload method when there is already a promise that is pending + // 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 (!promisePending) { + promisePending = true; + await settingRegistry.reload(pluginId); + promisePending = false; + } }; };