Directly query for extension version before declaring it missing (#250763)

* directly query for extension version before declaring it missing

* always fire event

* show missingFromGallery even when extension is disabled or not running

* whitespace
This commit is contained in:
Josh Spicer
2025-06-05 10:04:58 -07:00
committed by GitHub
parent 15805d0e29
commit 0def0be8e5
2 changed files with 14 additions and 9 deletions

View File

@@ -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);

View File

@@ -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 });
}
}
}