From b0b59b4c5aff7dd5a0fbbfc4cece67ef1b124cf5 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 8 Jan 2024 18:27:52 +0530 Subject: [PATCH] fix #200026 (#201990) --- .../common/extensionGalleryService.ts | 10 ++++++++-- .../extensionManagement/common/extensionManagement.ts | 1 + .../contrib/extensions/browser/extensionEditor.ts | 5 +++++ .../extensions/browser/extensionsWorkbenchService.ts | 4 ++++ .../workbench/contrib/extensions/common/extensions.ts | 1 + 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts index 434839f3a88..6602f172d96 100644 --- a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts @@ -212,7 +212,8 @@ const PropertyType = { PreRelease: 'Microsoft.VisualStudio.Code.PreRelease', LocalizedLanguages: 'Microsoft.VisualStudio.Code.LocalizedLanguages', WebExtension: 'Microsoft.VisualStudio.Code.WebExtension', - SponsorLink: 'Microsoft.VisualStudio.Code.SponsorLink' + SponsorLink: 'Microsoft.VisualStudio.Code.SponsorLink', + SupportLink: 'Microsoft.VisualStudio.Services.Links.Support', }; interface ICriterium { @@ -439,6 +440,10 @@ function getSponsorLink(version: IRawGalleryExtensionVersion): string | undefine return version.properties?.find(p => p.key === PropertyType.SponsorLink)?.value; } +function getSupportLink(version: IRawGalleryExtensionVersion): string | undefined { + return version.properties?.find(p => p.key === PropertyType.SupportLink)?.value; +} + function getIsPreview(flags: string): boolean { return flags.indexOf('preview') !== -1; } @@ -550,7 +555,8 @@ function toExtension(galleryExtension: IRawGalleryExtension, version: IRawGaller hasReleaseVersion: true, preview: getIsPreview(galleryExtension.flags), isSigned: !!assets.signature, - queryContext + queryContext, + supportLink: getSupportLink(latestVersion) }; } diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index be1cfcd113f..7b1397ca29c 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -219,6 +219,7 @@ export interface IGalleryExtension { properties: IGalleryExtensionProperties; telemetryData?: any; queryContext?: IStringDictionary; + supportLink?: string; } export interface IGalleryMetadata { diff --git a/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts b/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts index c0002fd0df1..e991e2d5f8d 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts @@ -940,6 +940,11 @@ export class ExtensionEditor extends EditorPane { if (extension.url) { resources.push([localize('Marketplace', "Marketplace"), URI.parse(extension.url)]); } + if (extension.url && extension.supportUrl) { + try { + resources.push([localize('issues', "Issues"), URI.parse(extension.supportUrl)]); + } catch (error) {/* Ignore */ } + } if (extension.repository) { try { resources.push([localize('repository', "Repository"), URI.parse(extension.repository)]); diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts index 34e22edab47..889b216554b 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts @@ -217,6 +217,10 @@ export class Extension implements IExtension { return this.gallery && this.gallery.assets.license ? this.gallery.assets.license.uri : undefined; } + get supportUrl(): string | undefined { + return this.gallery && this.gallery.supportLink ? this.gallery.supportLink : undefined; + } + get state(): ExtensionState { return this.stateProvider(this); } diff --git a/src/vs/workbench/contrib/extensions/common/extensions.ts b/src/vs/workbench/contrib/extensions/common/extensions.ts index 77fdf576c77..97ee589ea19 100644 --- a/src/vs/workbench/contrib/extensions/common/extensions.ts +++ b/src/vs/workbench/contrib/extensions/common/extensions.ts @@ -58,6 +58,7 @@ export interface IExtension { readonly description: string; readonly url?: string; readonly repository?: string; + readonly supportUrl?: string; readonly iconUrl: string; readonly iconUrlFallback: string; readonly licenseUrl?: string;