Skip to content

Commit a67ce21

Browse files
committed
telemetry(messages): maybeShowMinVscodeWarning
1 parent d697f44 commit a67ce21

File tree

2 files changed

+44
-28
lines changed

2 files changed

+44
-28
lines changed

packages/core/src/shared/extensionStartup.ts

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { fs } from '../shared/fs/fs'
1414
import { getIdeProperties, getIdeType, isAmazonQ, isCloud9, isCn, productName } from './extensionUtilities'
1515
import * as localizedText from './localizedText'
1616
import { AmazonQPromptSettings, ToolkitPromptSettings } from './settings'
17+
import { showMessage } from './utilities/messages'
1718

1819
const localize = nls.loadMessageBundle()
1920

@@ -27,19 +28,23 @@ export async function maybeShowMinVscodeWarning(minVscode: string) {
2728
}
2829
const updateButton = `Update ${vscode.env.appName}`
2930
if (getIdeType() === 'vscode' && semver.lt(vscode.version, minVscode)) {
30-
void vscode.window
31-
.showWarningMessage(
32-
`${productName()} will soon require VS Code ${minVscode} or newer. The currently running version ${vscode.version} will no longer receive updates.`,
33-
updateButton,
34-
localizedText.dontShow
35-
)
36-
.then(async (resp) => {
37-
if (resp === updateButton) {
38-
await vscode.commands.executeCommand('update.checkForUpdate')
39-
} else if (resp === localizedText.dontShow) {
40-
void settings.disablePrompt('minIdeVersion')
41-
}
42-
})
31+
void showMessage(
32+
'warn',
33+
`${productName()} will soon require VS Code ${minVscode} or newer. The currently running version ${vscode.version} will no longer receive updates.`,
34+
[updateButton, localizedText.dontShow],
35+
{},
36+
{
37+
id: 'versionNotification',
38+
component: 'editor',
39+
reason: 'unsupportedVersion',
40+
}
41+
).then(async (resp) => {
42+
if (resp === updateButton) {
43+
await vscode.commands.executeCommand('update.checkForUpdate')
44+
} else if (resp === localizedText.dontShow) {
45+
void settings.disablePrompt('minIdeVersion')
46+
}
47+
})
4348
}
4449
}
4550

packages/core/src/shared/utilities/messages.ts

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { getIcon, codicon } from '../icons'
1616
import globals from '../extensionGlobals'
1717
import { openUrl } from './vsCodeUtils'
1818
import { AmazonQPromptSettings, ToolkitPromptSettings } from '../../shared/settings'
19-
import { telemetry } from '../telemetry/telemetry'
19+
import { telemetry, ToolkitShowNotification } from '../telemetry/telemetry'
2020
import { vscodeComponent } from '../vscode/commands2'
2121

2222
export const messages = {
@@ -35,21 +35,32 @@ export function makeFailedWriteMessage(filename: string): string {
3535
return message
3636
}
3737

38-
function showMessageWithItems(
39-
message: string,
38+
export function showMessage(
4039
kind: 'info' | 'warn' | 'error' = 'error',
40+
message: string,
4141
items: string[] = [],
42-
useModal: boolean = false
43-
): Thenable<string | undefined> {
44-
switch (kind) {
45-
case 'info':
46-
return vscode.window.showInformationMessage(message, { modal: useModal }, ...items)
47-
case 'warn':
48-
return vscode.window.showWarningMessage(message, { modal: useModal }, ...items)
49-
case 'error':
50-
default:
51-
return vscode.window.showErrorMessage(message, { modal: useModal }, ...items)
42+
options: vscode.MessageOptions & { telemetry?: boolean } = {},
43+
metric: ToolkitShowNotification = {
44+
id: 'unknown',
45+
component: 'editor',
5246
}
47+
): Thenable<string | undefined> {
48+
return telemetry.toolkit_showNotification.run(async (span) => {
49+
span.record({
50+
passive: true,
51+
...metric,
52+
})
53+
54+
switch (kind) {
55+
case 'info':
56+
return vscode.window.showInformationMessage(message, options, ...items)
57+
case 'warn':
58+
return vscode.window.showWarningMessage(message, options, ...items)
59+
case 'error':
60+
default:
61+
return vscode.window.showErrorMessage(message, options, ...items)
62+
}
63+
})
5364
}
5465

5566
/**
@@ -75,7 +86,7 @@ export async function showMessageWithUrl(
7586
const uri = typeof url === 'string' ? vscode.Uri.parse(url) : url
7687
const items = [...extraItems, urlItem]
7788

78-
const p = showMessageWithItems(message, kind, items, useModal)
89+
const p = showMessage(kind, message, items, { modal: useModal })
7990
return p.then<string | undefined>((selection) => {
8091
if (selection === urlItem) {
8192
void openUrl(uri)
@@ -102,7 +113,7 @@ export async function showViewLogsMessage(
102113
const logsItem = localize('AWS.generic.message.viewLogs', 'View Logs...')
103114
const items = [...extraItems, logsItem]
104115

105-
const p = showMessageWithItems(message, kind, items)
116+
const p = showMessage(kind, message, items)
106117
return p.then<string | undefined>((selection) => {
107118
if (selection === logsItem) {
108119
globals.logOutputChannel.show(true)

0 commit comments

Comments
 (0)