update extension input on extension change

This commit is contained in:
Sandeep Somavarapu 2021-07-01 16:15:27 +02:00
parent ec6919acfa
commit b69eb39264
No known key found for this signature in database
GPG key ID: 1FED25EC4646638B

View file

@ -8,9 +8,10 @@ import { URI } from 'vs/base/common/uri';
import { localize } from 'vs/nls'; import { localize } from 'vs/nls';
import { EditorInputCapabilities, IEditorInput, IUntypedEditorInput } from 'vs/workbench/common/editor'; import { EditorInputCapabilities, IEditorInput, IUntypedEditorInput } from 'vs/workbench/common/editor';
import { EditorInput } from 'vs/workbench/common/editor/editorInput'; import { EditorInput } from 'vs/workbench/common/editor/editorInput';
import { IExtension } from 'vs/workbench/contrib/extensions/common/extensions'; import { IExtension, IExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/common/extensions';
import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
import { join } from 'vs/base/common/path'; import { join } from 'vs/base/common/path';
export class ExtensionsInput extends EditorInput { export class ExtensionsInput extends EditorInput {
static readonly ID = 'workbench.extensions.input2'; static readonly ID = 'workbench.extensions.input2';
@ -26,18 +27,26 @@ export class ExtensionsInput extends EditorInput {
override get resource() { override get resource() {
return URI.from({ return URI.from({
scheme: Schemas.extension, scheme: Schemas.extension,
path: join(this.extension.identifier.id, 'extension') path: join(this._extension.identifier.id, 'extension')
}); });
} }
constructor( constructor(
public readonly extension: IExtension private _extension: IExtension,
@IExtensionsWorkbenchService extensionsWorkbenchService: IExtensionsWorkbenchService
) { ) {
super(); super();
this._register(extensionsWorkbenchService.onChange(extension => {
if (extension && areSameExtensions(this._extension.identifier, extension.identifier)) {
this._extension = extension;
}
}));
} }
get extension(): IExtension { return this._extension; }
override getName(): string { override getName(): string {
return localize('extensionsInputName', "Extension: {0}", this.extension.displayName); return localize('extensionsInputName', "Extension: {0}", this._extension.displayName);
} }
override matches(other: IEditorInput | IUntypedEditorInput): boolean { override matches(other: IEditorInput | IUntypedEditorInput): boolean {
@ -45,6 +54,6 @@ export class ExtensionsInput extends EditorInput {
return true; return true;
} }
return other instanceof ExtensionsInput && areSameExtensions(this.extension.identifier, other.extension.identifier); return other instanceof ExtensionsInput && areSameExtensions(this._extension.identifier, other._extension.identifier);
} }
} }