Skip to content

Commit 30cabf9

Browse files
Merge master into feature/web
2 parents 47faf8e + 049152b commit 30cabf9

File tree

6 files changed

+25
-28
lines changed

6 files changed

+25
-28
lines changed

src/auth/sso/model.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { CancellationError } from '../../shared/utilities/timeoutUtils'
1616
import { ssoAuthHelpUrl } from '../../shared/constants'
1717
import { openUrl } from '../../shared/utilities/vsCodeUtils'
1818
import { ToolkitError } from '../../shared/errors'
19+
import { isCloud9 } from '../../shared/extensionUtilities'
1920

2021
export interface SsoToken {
2122
/**
@@ -117,7 +118,10 @@ export async function openSsoPortalLink(startUrl: string, authorization: Authori
117118

118119
async function showLoginNotification() {
119120
const name = startUrl === builderIdStartUrl ? localizedText.builderId() : localizedText.iamIdentityCenterFull()
120-
const title = localize('AWS.auth.loginWithBrowser.messageTitle', 'Confirm Code for {0}', name)
121+
// C9 doesn't support `detail` field with modals so we need to put it all in the `title`
122+
const title = isCloud9()
123+
? `Confirm Code "${authorization.userCode}" for ${name} in the browser.`
124+
: localize('AWS.auth.loginWithBrowser.messageTitle', 'Confirm Code for {0}', name)
121125
const detail = localize(
122126
'AWS.auth.loginWithBrowser.messageDetail',
123127
'Confirm this code in the browser: {0}',

src/auth/ui/vue/show.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import { CancellationError } from '../../../shared/utilities/timeoutUtils'
4646
import { validateSsoUrl, validateSsoUrlFormat } from '../../sso/validation'
4747
import { debounce } from '../../../shared/utilities/functionUtils'
4848
import { AuthError, ServiceItemId, isServiceItemId, userCancelled } from './types'
49-
import { awsIdSignIn } from '../../../codewhisperer/util/showSsoPrompt'
49+
import { awsIdSignIn, showCodeWhispererConnectionPrompt } from '../../../codewhisperer/util/showSsoPrompt'
5050
import { connectToEnterpriseSso } from '../../../codewhisperer/util/getStartUrl'
5151
import { trustedDomainCancellation } from '../../sso/model'
5252
import { FeatureId, CredentialSourceId, Result, telemetry } from '../../../shared/telemetry/telemetry'
@@ -741,16 +741,20 @@ export type AuthSource = (typeof AuthSources)[keyof typeof AuthSources]
741741
export const showManageConnections = Commands.declare(
742742
{ id: showConnectionsPageCommand, compositeKey: { 1: 'source' } },
743743
(context: vscode.ExtensionContext) => (_: VsCodeCommandArg, source: AuthSource, serviceToShow?: ServiceItemId) => {
744+
if (_ !== placeholder) {
745+
source = 'vscodeComponent'
746+
}
747+
744748
// The auth webview page does not make sense to use in C9,
745749
// so show the auth quick pick instead.
746750
if (isCloud9('any')) {
751+
if (source.toLowerCase().includes('codewhisperer')) {
752+
// Show CW specific quick pick for CW connections
753+
return showCodeWhispererConnectionPrompt()
754+
}
747755
return addConnection.execute()
748756
}
749757

750-
if (_ !== placeholder) {
751-
source = 'vscodeComponent'
752-
}
753-
754758
if (!isServiceItemId(serviceToShow)) {
755759
serviceToShow = undefined
756760
}

src/codecatalyst/activation.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ export async function activate(ctx: ExtContext): Promise<void> {
3535
const commands = new CodeCatalystCommands(authProvider)
3636
const remoteSourceProvider = new CodeCatalystRemoteSourceProvider(commands, authProvider)
3737

38+
await authProvider.restore()
39+
3840
ctx.extensionContext.subscriptions.push(
3941
uriHandlers.register(ctx.uriHandler, CodeCatalystCommands.declared),
4042
...Object.values(CodeCatalystCommands.declared).map(c => c.register(commands)),

src/codewhisperer/commands/basicCommands.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { startSecurityScanWithProgress, confirmStopSecurityScan } from './startS
1313
import { SecurityPanelViewProvider } from '../views/securityPanelViewProvider'
1414
import { CodeSuggestionsState, codeScanState } from '../models/model'
1515
import { connectToEnterpriseSso, getStartUrl } from '../util/getStartUrl'
16-
import { showConnectionPrompt } from '../util/showSsoPrompt'
16+
import { showCodeWhispererConnectionPrompt } from '../util/showSsoPrompt'
1717
import { ReferenceLogViewProvider } from '../service/referenceLogViewProvider'
1818
import { AuthUtil } from '../util/authUtil'
1919
import { isCloud9 } from '../../shared/extensionUtilities'
@@ -116,7 +116,7 @@ export const showManageCwConnections = Commands.declare(
116116
/** @deprecated in favor of the `Add Connection` page */
117117
export const showSsoSignIn = Commands.declare('aws.codeWhisperer.sso', () => async () => {
118118
telemetry.ui_click.emit({ elementId: 'cw_signUp_Cta' })
119-
await showConnectionPrompt()
119+
await showCodeWhispererConnectionPrompt()
120120
})
121121

122122
// Shortcut command to directly connect to Identity Center or prompt start URL entry

src/codewhisperer/util/showSsoPrompt.ts

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,14 @@ import { ToolkitError } from '../../shared/errors'
1515
import { createCommonButtons } from '../../shared/ui/buttons'
1616
import { telemetry } from '../../shared/telemetry/telemetry'
1717
import { isCloud9 } from '../../shared/extensionUtilities'
18-
import { isIamConnection } from '../../auth/connection'
1918
import { createBuilderIdItem, createSsoItem, createIamItem } from '../../auth/utils'
2019

21-
export const showConnectionPrompt = async () => {
22-
// Skip this prompt on C9 because:
23-
// * The UI looks bad with C9's style of pickers
24-
// * C9 will always start with _some_ form of auth so this prompt is less common
25-
if (isCloud9()) {
26-
if (isCloud9('classic')) {
27-
const iamConn = (await AuthUtil.instance.auth.listConnections()).find(isIamConnection)
28-
if (iamConn) {
29-
await AuthUtil.instance.auth.useConnection(iamConn)
30-
}
31-
} else {
32-
await AuthUtil.instance.connectToAwsBuilderId()
33-
}
34-
35-
return
36-
}
20+
export const showCodeWhispererConnectionPrompt = async () => {
21+
const items = isCloud9('classic')
22+
? [createSsoItem(), createCodeWhispererIamItem()]
23+
: [createBuilderIdItem(), createSsoItem(), createCodeWhispererIamItem()]
3724

38-
const resp = await showQuickPick([createBuilderIdItem(), createSsoItem(), createCodeWhispererIamItem()], {
25+
const resp = await showQuickPick(items, {
3926
title: 'CodeWhisperer: Add Connection to AWS',
4027
placeholder: 'Select a connection option to start using CodeWhisperer',
4128
buttons: createCommonButtons() as vscode.QuickInputButton[],

src/test/codewhisperer/util/showSsoPrompt.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as vscode from 'vscode'
77
import assert from 'assert'
88
import * as sinon from 'sinon'
99
import { resetCodeWhispererGlobalVariables } from '../testUtil'
10-
import { awsIdSignIn, showConnectionPrompt } from '../../../codewhisperer/util/showSsoPrompt'
10+
import { awsIdSignIn, showCodeWhispererConnectionPrompt } from '../../../codewhisperer/util/showSsoPrompt'
1111
import { getTestLogger } from '../../globalSetup.test'
1212
import { AuthUtil } from '../../../codewhisperer/util/authUtil'
1313
import { getTestWindow } from '../../shared/vscode/window'
@@ -30,7 +30,7 @@ describe('showConnectionPrompt', function () {
3030
picker.acceptItem(picker.items[0])
3131
})
3232

33-
await showConnectionPrompt()
33+
await showCodeWhispererConnectionPrompt()
3434

3535
assert.ok(authUtilSpy.called)
3636
const assertTelemetry = assertTelemetryCurried('ui_click')

0 commit comments

Comments
 (0)