From 9e4f119bc679e0d5546ec35b6ba87f8b473c4df1 Mon Sep 17 00:00:00 2001 From: ikiw Date: Tue, 25 Feb 2020 23:43:47 +0530 Subject: [PATCH] Refactor PR #7879 to use throttler --- packages/docmanager-extension/package.json | 1 + packages/docmanager-extension/src/index.ts | 14 ++++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/docmanager-extension/package.json b/packages/docmanager-extension/package.json index 00319de75ee2..218f3f630d54 100644 --- a/packages/docmanager-extension/package.json +++ b/packages/docmanager-extension/package.json @@ -48,6 +48,7 @@ "@lumino/algorithm": "^1.2.3", "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", + "@lumino/polling": "^1.0.4", "@lumino/widgets": "^1.11.1" }, "devDependencies": { diff --git a/packages/docmanager-extension/src/index.ts b/packages/docmanager-extension/src/index.ts index a73280981442..92e0b4811672 100644 --- a/packages/docmanager-extension/src/index.ts +++ b/packages/docmanager-extension/src/index.ts @@ -44,6 +44,8 @@ import { IDisposable } from '@lumino/disposable'; import { Widget } from '@lumino/widgets'; +import { Throttler } from '@lumino/polling'; + /** * The command IDs used by the document manager plugin. */ @@ -244,15 +246,11 @@ ${fileTypes}`; // 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; + let reloadThrottle = new Throttler(() => + settingRegistry.reload(pluginId) + ); - return async () => { - if (!promisePending) { - promisePending = true; - await settingRegistry.reload(pluginId); - promisePending = false; - } - }; + return reloadThrottle.invoke.bind(reloadThrottle); }; // If the document registry gains or loses a factory or file type,