/
SidebarCommands.ts
85 lines (82 loc) · 3.36 KB
/
SidebarCommands.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import * as vscode from 'vscode'
import {
ACCOUNT_LIMITS_INFO_URL,
ACCOUNT_UPGRADE_URL,
ACCOUNT_USAGE_URL,
CODY_DOC_URL,
CODY_FEEDBACK_URL,
CODY_SUPPORT_URL,
DISCORD_URL,
} from '../chat/protocol'
import { releaseNotesURL } from '../release'
import { telemetryService } from '../services/telemetry'
import { telemetryRecorder } from '../services/telemetry-v2'
import { version } from '../version'
export function registerSidebarCommands(): vscode.Disposable[] {
function logSidebarClick(feature: string) {
telemetryService.log(`CodyVSCodeExtension:sidebar:${feature}:clicked`, undefined, {
hasV2Event: true,
})
telemetryRecorder.recordEvent(`cody.sidebar.${feature}`, 'clicked')
}
return [
vscode.commands.registerCommand('cody.show-page', (page: string) => {
logSidebarClick(page)
let url: URL
switch (page) {
case 'upgrade':
url = ACCOUNT_UPGRADE_URL
break
case 'usage':
url = ACCOUNT_USAGE_URL
break
case 'rate-limits':
url = ACCOUNT_LIMITS_INFO_URL
break
default:
console.warn(`Unable to show unknown page: "${page}"`)
return
}
void vscode.env.openExternal(vscode.Uri.parse(url.toString()))
}),
vscode.commands.registerCommand('cody.sidebar.settings', () => {
logSidebarClick('settings')
void vscode.commands.executeCommand('cody.status-bar.interacted')
}),
vscode.commands.registerCommand('cody.sidebar.keyboardShortcuts', () => {
logSidebarClick('keyboardShortcuts')
void vscode.commands.executeCommand(
'workbench.action.openGlobalKeybindings',
'@ext:sourcegraph.cody-ai'
)
}),
vscode.commands.registerCommand('cody.sidebar.releaseNotes', () => {
logSidebarClick('releaseNotes')
void vscode.commands.executeCommand('vscode.open', releaseNotesURL(version))
}),
vscode.commands.registerCommand('cody.sidebar.documentation', () => {
logSidebarClick('documentation')
void vscode.commands.executeCommand('vscode.open', CODY_DOC_URL.href)
}),
vscode.commands.registerCommand('cody.sidebar.support', () => {
logSidebarClick('support')
void vscode.commands.executeCommand('vscode.open', CODY_SUPPORT_URL.href)
}),
vscode.commands.registerCommand('cody.sidebar.feedback', () => {
logSidebarClick('feedback')
void vscode.commands.executeCommand('vscode.open', CODY_FEEDBACK_URL.href)
}),
vscode.commands.registerCommand('cody.sidebar.discord', () => {
logSidebarClick('discord')
void vscode.commands.executeCommand('vscode.open', DISCORD_URL.href)
}),
vscode.commands.registerCommand('cody.sidebar.account', () => {
logSidebarClick('account')
void vscode.commands.executeCommand('cody.auth.account')
}),
vscode.commands.registerCommand('cody.sidebar.logs', () => {
logSidebarClick('logs')
void vscode.commands.executeCommand('cody.debug.export.logs')
}),
]
}