From 3a6e38fea8d170263b89654a8df2f18558dabad4 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Fri, 24 Jun 2022 15:13:28 -0700 Subject: [PATCH] Trigger refresh when using Select Interpreter command if no envs were found previously --- src/client/pythonEnvironments/base/locator.ts | 2 +- .../composite/envsCollectionService.ts | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/client/pythonEnvironments/base/locator.ts b/src/client/pythonEnvironments/base/locator.ts index 609010501d63..0e0347229df9 100644 --- a/src/client/pythonEnvironments/base/locator.ts +++ b/src/client/pythonEnvironments/base/locator.ts @@ -199,7 +199,7 @@ export type TriggerRefreshOptions = { */ clearCache?: boolean; /** - * Only trigger a refresh if it hasn't already been triggered for this session. + * Only trigger a refresh if it hasn't already been triggered for this session, or if no envs were found previously. */ ifNotTriggerredAlready?: boolean; }; diff --git a/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts b/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts index 0e0c9580af4a..eda2c25fdb70 100644 --- a/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts +++ b/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts @@ -39,7 +39,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher>(); /** Keeps track of whether a refresh has been triggered for various queries. */ - private wasRefreshTriggeredForQuery = new Map(); + private hasRefreshFinishedForQuery = new Map(); private readonly progress = new EventEmitter(); @@ -102,13 +102,12 @@ export class EnvsCollectionService extends PythonEnvsWatcher { const stopWatch = new StopWatch(); - if (options?.ifNotTriggerredAlready) { - if (this.wasRefreshTriggered(query)) { - return Promise.resolve(); // Refresh was already triggered, return. - } - } let refreshPromise = this.getRefreshPromiseForQuery(query); if (!refreshPromise) { + if (options?.ifNotTriggerredAlready && this.hasRefreshFinished(query) && this.getEnvs().length) { + // Do not trigger another refresh if a refresh has previously finished and envs were found. + return Promise.resolve(); + } refreshPromise = this.startRefresh(query, options); } return refreshPromise.then(() => this.sendTelemetry(query, stopWatch)); @@ -191,8 +190,8 @@ export class EnvsCollectionService extends PythonEnvsWatcher getEnvPath(e.executable.filename, e.location).pathType === 'envFolderPath').length, }); } - this.wasRefreshTriggeredForQuery.set(query, true); + this.hasRefreshFinishedForQuery.set(query, true); } }