diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts index 9f110c18ae2..1fc3f63b70a 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts @@ -2608,6 +2608,11 @@ export class ExtensionStatusAction extends ExtensionAction { return; } + if (this.extension.missingFromGallery) { + this.updateStatus({ icon: warningIcon, message: new MarkdownString(localize('missing from gallery tooltip', "This extension is no longer available on the Extension Marketplace.")) }, true); + return; + } + if (this.extensionsWorkbenchService.canSetLanguage(this.extension)) { return; } @@ -2807,11 +2812,6 @@ export class ExtensionStatusAction extends ExtensionAction { const isEnabled = this.workbenchExtensionEnablementService.isEnabled(this.extension.local); const isRunning = this.extensionService.extensions.some(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier)); - if (this.extension.missingFromGallery && isEnabled && isRunning) { - this.updateStatus({ icon: warningIcon, message: new MarkdownString(localize('missing from gallery tooltip', "This extension is no longer available on the Extension Marketplace.")) }, true); - return; - } - if (!this.extension.isWorkspaceScoped && isEnabled && isRunning) { if (this.extension.enablementState === EnablementState.EnabledWorkspace) { this.updateStatus({ message: new MarkdownString(localize('workspace enabled', "This extension is enabled for this workspace by the user.")) }, true); diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts index 56714f2c660..830d9fe5280 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts @@ -689,11 +689,16 @@ class Extensions extends Disposable { if (!flagExtensionsMissingFromGallery.some(f => areSameExtensions(f, extension.identifier))) { continue; } - const gallery = galleryExtensions.find(g => areSameExtensions(g.identifier, extension.identifier)); - if (!gallery) { - extension.missingFromGallery = true; - this._onChange.fire({ extension }); + if (galleryExtensions.find(g => areSameExtensions(g.identifier, extension.identifier))) { + continue; } + const [gallery] = await this.galleryService.getExtensions([{ ...extension.identifier, version: extension.version }], CancellationToken.None); + if (gallery) { + extension.gallery = gallery; + } else { + extension.missingFromGallery = true; + } + this._onChange.fire({ extension }); } } }