@@ -63,6 +63,7 @@ import * as jose from 'jose'
63
63
import { AmazonQChatViewProvider } from './webviewProvider'
64
64
import { AuthUtil , ReferenceLogViewProvider } from 'aws-core-vscode/codewhisperer'
65
65
import { amazonQDiffScheme , AmazonQPromptSettings , messages , openUrl } from 'aws-core-vscode/shared'
66
+ import { credentialsValidation } from 'aws-core-vscode/auth'
66
67
import {
67
68
DefaultAmazonQAppInitContext ,
68
69
messageDispatcher ,
@@ -72,6 +73,7 @@ import {
72
73
} from 'aws-core-vscode/amazonq'
73
74
import { telemetry , TelemetryBase } from 'aws-core-vscode/telemetry'
74
75
import { isValidResponseError } from './error'
76
+ import { focusAmazonQPanel } from './commands'
75
77
76
78
export function registerLanguageServerEventListener ( languageClient : LanguageClient , provider : AmazonQChatViewProvider ) {
77
79
languageClient . info (
@@ -328,13 +330,33 @@ export function registerMessageListeners(
328
330
}
329
331
break
330
332
case buttonClickRequestType . method : {
333
+ if ( message . params . buttonId === 'paidtier-upgrade-q' ) {
334
+ focusAmazonQPanel ( ) . catch ( ( e ) => languageClient . error ( `[VSCode Client] focusAmazonQPanel() failed` ) )
335
+
336
+ const accountId = await vscode . window . showInputBox ( {
337
+ title : 'Upgrade Amazon Q' ,
338
+ prompt : 'Enter your 12-digit AWS account ID' ,
339
+ placeHolder : '111111111111' ,
340
+ validateInput : credentialsValidation . validateAwsAccount ,
341
+ } )
342
+
343
+ if ( accountId ) {
344
+ languageClient . sendRequest ( 'workspace/executeCommand' , {
345
+ command : 'aws/chat/manageSubscription' ,
346
+ arguments : [ accountId ] ,
347
+ } )
348
+ } else {
349
+ languageClient . error ( '[VSCode Client] user canceled or did not input AWS account id' )
350
+ }
351
+ }
352
+
331
353
const buttonResult = await languageClient . sendRequest < ButtonClickResult > (
332
354
buttonClickRequestType . method ,
333
355
message . params
334
356
)
335
357
if ( ! buttonResult . success ) {
336
358
languageClient . error (
337
- `[VSCode Client] Failed to execute action associated with button with reason : ${ buttonResult . failureReason } `
359
+ `[VSCode Client] Failed to execute button action : ${ buttonResult . failureReason } `
338
360
)
339
361
}
340
362
break
@@ -433,6 +455,8 @@ export function registerMessageListeners(
433
455
languageClient . onRequest < ShowDocumentParams , ShowDocumentResult > (
434
456
ShowDocumentRequest . method ,
435
457
async ( params : ShowDocumentParams ) : Promise < ShowDocumentParams | ResponseError < ShowDocumentResult > > => {
458
+ focusAmazonQPanel ( ) . catch ( ( e ) => languageClient . error ( `[VSCode Client] focusAmazonQPanel() failed` ) )
459
+
436
460
try {
437
461
const uri = vscode . Uri . parse ( params . uri )
438
462
0 commit comments