Skip to content

Commit 972f150

Browse files
committed
fixup
1 parent 5122117 commit 972f150

File tree

9 files changed

+46
-13
lines changed

9 files changed

+46
-13
lines changed

packages/amazonq/package.json

+4
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@
127127
"amazonQWorkspaceLspManifestMessage": {
128128
"type": "boolean",
129129
"default": false
130+
},
131+
"amazonQChatDisclaimerAcknowledged": {
132+
"type": "boolean",
133+
"default": false
130134
}
131135
},
132136
"additionalProperties": false

packages/amazonq/src/lsp/chat/messages.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import { Disposable, LanguageClient, Position, State, TextDocumentIdentifier } f
2828
import * as jose from 'jose'
2929
import { AmazonQChatViewProvider } from './webviewProvider'
3030
import { AuthUtil } from 'aws-core-vscode/codewhisperer'
31-
import { globals } from 'aws-core-vscode/shared'
31+
import { AmazonQPromptSettings } from 'aws-core-vscode/shared'
3232

3333
export function registerLanguageServerEventListener(languageClient: LanguageClient, provider: AmazonQChatViewProvider) {
3434
languageClient.onDidChangeState(({ oldState, newState }) => {
@@ -109,7 +109,7 @@ export function registerMessageListeners(
109109
break
110110
}
111111
case DISCLAIMER_ACKNOWLEDGED: {
112-
globals.globalState.tryUpdate('aws.amazonq.disclaimerAcknowledged', true)
112+
void AmazonQPromptSettings.instance.update('amazonQChatDisclaimerAcknowledged', true)
113113
break
114114
}
115115
case chatRequestType.method: {

packages/amazonq/src/lsp/chat/webviewProvider.ts

+10-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import {
1313
Uri,
1414
} from 'vscode'
1515
import { QuickActionCommandGroup } from '@aws/mynah-ui'
16-
import { globals, LanguageServerResolver } from 'aws-core-vscode/shared'
16+
import { LanguageServerResolver } from 'aws-core-vscode/shared'
17+
import { disclaimer } from 'aws-core-vscode/amazonq'
1718

1819
export class AmazonQChatViewProvider implements WebviewViewProvider {
1920
public static readonly viewType = 'aws.amazonq.AmazonQChatView'
@@ -42,7 +43,11 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
4243

4344
constructor(private readonly mynahUIPath: string) {}
4445

45-
public resolveWebviewView(webviewView: WebviewView, context: WebviewViewResolveContext, _token: CancellationToken) {
46+
public async resolveWebviewView(
47+
webviewView: WebviewView,
48+
context: WebviewViewResolveContext,
49+
_token: CancellationToken
50+
) {
4651
this.webview = webviewView.webview
4752

4853
const lspDir = Uri.parse(LanguageServerResolver.defaultDir)
@@ -53,13 +58,13 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
5358
}
5459

5560
const uiPath = webviewView.webview.asWebviewUri(Uri.parse(this.mynahUIPath)).toString()
56-
webviewView.webview.html = this.getWebviewContent(uiPath)
61+
webviewView.webview.html = await this.getWebviewContent(uiPath)
5762

5863
this.onDidResolveWebviewEmitter.fire()
5964
}
6065

61-
private getWebviewContent(mynahUIPath: string) {
62-
const disclaimerAcknowledged = globals.globalState.tryGet('aws.amazonq.disclaimerAcknowledged', Boolean, false)
66+
private async getWebviewContent(mynahUIPath: string) {
67+
const disclaimerAcknowledged = await disclaimer.disclaimerAcknowledged()
6368
return `
6469
<!DOCTYPE html>
6570
<html lang="en">

packages/core/src/amazonq/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export * from './lsp/config'
4848
export * as WorkspaceLspInstaller from './lsp/workspaceInstaller'
4949
export * as secondaryAuth from '../auth/secondaryAuth'
5050
export * as authConnection from '../auth/connection'
51+
export * as disclaimer from './util/disclaimer'
5152
import { FeatureContext } from '../shared/featureConfig'
5253

5354
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*!
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
import globals from '../../shared/extensionGlobals'
7+
import { AmazonQPromptSettings } from '../../shared/settings'
8+
9+
/**
10+
* If the previous global state was acknowledged, then suppress the prompt and set global state to false
11+
* Otherwise, the new flows will enable amazonQChatDisclaimerAcknowledged directly
12+
*/
13+
export async function disclaimerAcknowledged(): Promise<boolean> {
14+
const acknowledged = globals.globalState.tryGet('aws.amazonq.disclaimerAcknowledged', Boolean, false)
15+
if (acknowledged) {
16+
await AmazonQPromptSettings.instance.update('amazonQChatDisclaimerAcknowledged', true)
17+
await globals.globalState.update('aws.amazonq.disclaimerAcknowledged', false)
18+
}
19+
20+
return AmazonQPromptSettings.instance.get('amazonQChatDisclaimerAcknowledged', false)
21+
}

packages/core/src/amazonq/webview/generators/webViewContent.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { AuthUtil } from '../../../codewhisperer/util/authUtil'
99
import { FeatureConfigProvider, FeatureContext } from '../../../shared/featureConfig'
1010
import globals from '../../../shared/extensionGlobals'
1111
import { isSageMaker } from '../../../shared/extensionUtilities'
12+
import { disclaimerAcknowledged } from '../../util/disclaimer'
1213

1314
export class WebViewContentGenerator {
1415
private async generateFeatureConfigsData(): Promise<string> {
@@ -80,8 +81,7 @@ export class WebViewContentGenerator {
8081
const featureConfigsString = await this.generateFeatureConfigsData()
8182

8283
const disabledCommandsString = isSageMaker() ? `['/dev', '/transform']` : '[]'
83-
const disclaimerAcknowledged = globals.globalState.tryGet('aws.amazonq.disclaimerAcknowledged', Boolean, false)
84-
84+
const enableDisclaimer = await disclaimerAcknowledged()
8585
const welcomeLoadCount = globals.globalState.tryGet('aws.amazonq.welcomeChatShowCount', Number, 0)
8686
const isSMUS = isSageMaker('SMUS')
8787

@@ -92,7 +92,7 @@ export class WebViewContentGenerator {
9292
const init = () => {
9393
createMynahUI(acquireVsCodeApi(), ${
9494
(await AuthUtil.instance.getChatAuthState()).amazonQ === 'connected'
95-
},${featureConfigsString},${welcomeLoadCount},${disclaimerAcknowledged},${disabledCommandsString},${isSMUS});
95+
},${featureConfigsString},${welcomeLoadCount},${enableDisclaimer},${disabledCommandsString},${isSMUS});
9696
}
9797
</script>
9898
`

packages/core/src/amazonq/webview/messages/messageDispatcher.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { isClickTelemetry, isOpenAgentTelemetry } from '../ui/telemetry/actions'
1515
import globals from '../../../shared/extensionGlobals'
1616
import { openUrl } from '../../../shared/utilities/vsCodeUtils'
1717
import { DefaultAmazonQAppInitContext } from '../../apps/initContext'
18+
import { AmazonQPromptSettings } from '../../../shared/settings'
1819

1920
const qChatModuleName = 'amazonqChat'
2021

@@ -77,7 +78,7 @@ export function dispatchWebViewMessagesToApps(
7778
return
7879
}
7980
case 'disclaimer-acknowledged': {
80-
globals.globalState.tryUpdate('aws.amazonq.disclaimerAcknowledged', true)
81+
void AmazonQPromptSettings.instance.update('amazonQChatDisclaimerAcknowledged', true)
8182
return
8283
}
8384
case 'update-welcome-count': {

packages/core/src/shared/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export { activate as activateLogger } from './logger/activation'
1313
export { activate as activateTelemetry } from './telemetry/activation'
1414
export { DefaultAwsContext } from './awsContext'
1515
export { DefaultAWSClientBuilder, ServiceOptions } from './awsClientBuilder'
16-
export { Settings, Experiments, DevSettings } from './settings'
16+
export { Settings, Experiments, DevSettings, AmazonQPromptSettings } from './settings'
1717
export * from './extensionUtilities'
1818
export * from './extensionStartup'
1919
export { RegionProvider } from './regions/regionProvider'

packages/core/src/shared/settings-amazonq.gen.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ export const amazonqSettings = {
2020
"minIdeVersion": {},
2121
"ssoCacheError": {},
2222
"amazonQLspManifestMessage": {},
23-
"amazonQWorkspaceLspManifestMessage": {}
23+
"amazonQWorkspaceLspManifestMessage": {},
24+
"amazonQChatDisclaimerAcknowledged": {}
2425
},
2526
"amazonQ.showCodeWithReferences": {},
2627
"amazonQ.allowFeatureDevelopmentToRunCodeAndTests": {},

0 commit comments

Comments
 (0)