From 68250b1785f9b0bbad4f95ab4b3fd62dca0a7377 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Mon, 21 Oct 2024 17:33:29 +0200 Subject: [PATCH] chat - keep storage key updated for chat installation status --- .../chatInstallEntitlement.contribution.ts | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/contrib/chat/common/chatInstallEntitlement.contribution.ts b/src/vs/workbench/contrib/chat/common/chatInstallEntitlement.contribution.ts index 27f2819c81690..0adfe770a1646 100644 --- a/src/vs/workbench/contrib/chat/common/chatInstallEntitlement.contribution.ts +++ b/src/vs/workbench/contrib/chat/common/chatInstallEntitlement.contribution.ts @@ -61,10 +61,11 @@ class ChatInstallEntitlementContribution extends Disposable implements IWorkbenc const extensions = await this.extensionManagementService.getInstalled(); const installed = extensions.find(value => ExtensionIdentifier.equals(value.identifier.id, this.productService.gitHubEntitlement?.extensionId)); + this.updateExtensionInstalled(installed ? true : false); if (!installed) { this.registerListeners(); } else { - this.disableEntitlement(true); + this.disableEntitlement(); } } @@ -72,7 +73,8 @@ class ChatInstallEntitlementContribution extends Disposable implements IWorkbenc this.listeners.add(this.extensionService.onDidChangeExtensions(result => { for (const extension of result.added) { if (ExtensionIdentifier.equals(this.productService.gitHubEntitlement?.extensionId, extension.identifier)) { - this.disableEntitlement(true); + this.updateExtensionInstalled(true); + this.disableEntitlement(); return; } } @@ -82,7 +84,7 @@ class ChatInstallEntitlementContribution extends Disposable implements IWorkbenc if (e.providerId === this.productService.gitHubEntitlement?.providerId && e.event.added?.length) { await this.resolveEntitlement(e.event.added[0]); } else if (e.providerId === this.productService.gitHubEntitlement?.providerId && e.event.removed?.length) { - this.disableEntitlement(false); + this.disableEntitlement(); } })); @@ -100,8 +102,9 @@ class ChatInstallEntitlementContribution extends Disposable implements IWorkbenc const installedExtensions = await this.extensionManagementService.getInstalled(); const installed = installedExtensions.find(value => ExtensionIdentifier.equals(value.identifier.id, this.productService.gitHubEntitlement?.extensionId)); + this.updateExtensionInstalled(installed ? true : false); if (installed) { - this.disableEntitlement(true); + this.disableEntitlement(); return; } @@ -149,13 +152,14 @@ class ChatInstallEntitlementContribution extends Disposable implements IWorkbenc return entitled; } - private disableEntitlement(isExtensionInstalled: boolean): void { - if (isExtensionInstalled) { - this.storageService.store(ChatInstallEntitlementContribution.CHAT_EXTENSION_INSTALLED_KEY, true, StorageScope.PROFILE, StorageTarget.MACHINE); - } + private disableEntitlement(): void { this.chatInstallEntitledContextKey.set(false); this.listeners.dispose(); } + + private updateExtensionInstalled(isExtensionInstalled: boolean): void { + this.storageService.store(ChatInstallEntitlementContribution.CHAT_EXTENSION_INSTALLED_KEY, isExtensionInstalled, StorageScope.PROFILE, StorageTarget.MACHINE); + } } registerWorkbenchContribution2('workbench.chat.installEntitlement', ChatInstallEntitlementContribution, WorkbenchPhase.BlockRestore);