fix(vscode): align marketplace telemetry with legacy event names, properties, and timing

This commit is contained in:
Mark IJbema
2026-03-17 15:07:02 +01:00
parent c115a9e39f
commit e37dfd326d
2 changed files with 23 additions and 9 deletions
@@ -32,6 +32,7 @@ export enum TelemetryEventName {
PROMPT_ENHANCED = "Prompt Enhanced",
// Marketplace
MARKETPLACE_INSTALL_BUTTON_CLICKED = "Marketplace Install Button Clicked",
MARKETPLACE_ITEM_INSTALLED = "Marketplace Item Installed",
MARKETPLACE_ITEM_REMOVED = "Marketplace Item Removed",
@@ -31,6 +31,7 @@ export const MarketplaceView = () => {
const [fetching, setFetching] = createSignal(true)
const [errors, setErrors] = createSignal<string[]>([])
const [tab, setTab] = createSignal("mcp")
const [pending, setPending] = createSignal<{ item: MarketplaceItem; scope: "project" | "global" } | null>(null)
const skills = createMemo(() => items().filter((i): i is SkillMarketplaceItem => i.type === "skill"))
const mcps = createMemo(() => items().filter((i): i is McpMarketplaceItem => i.type === "mcp"))
@@ -51,7 +52,17 @@ export const MarketplaceView = () => {
setFetching(false)
}
if (msg.type === "marketplaceRemoveResult") {
const removed = pending()
setPending(null)
if (msg.success) {
if (removed) {
telemetry("Marketplace Item Removed", {
itemId: removed.item.id,
itemType: removed.item.type,
itemName: removed.item.name,
target: removed.scope,
})
}
fetchData()
} else {
setErrors((prev) => [...prev, msg.error ?? t("marketplace.remove.failed", { name: msg.slug })])
@@ -72,16 +83,22 @@ export const MarketplaceView = () => {
}
const handleInstall = (item: MarketplaceItem) => {
telemetry("Marketplace Install Button Clicked", {
itemId: item.id,
itemType: item.type,
itemName: item.name,
})
dialog.show(() => (
<InstallModal
item={item}
onClose={() => dialog.close()}
onInstallResult={(success, scope) => {
if (success) {
telemetry("marketplace_item_installed", {
id: item.id,
type: item.type,
scope,
telemetry("Marketplace Item Installed", {
itemId: item.id,
itemType: item.type,
itemName: item.name,
target: scope,
})
dialog.close()
fetchData()
@@ -98,16 +115,12 @@ export const MarketplaceView = () => {
scope={scope}
onClose={() => dialog.close()}
onConfirm={() => {
setPending({ item, scope })
vscode.postMessage({
type: "removeInstalledMarketplaceItem",
mpItem: item,
mpInstallOptions: { target: scope },
})
telemetry("marketplace_item_removed", {
id: item.id,
type: item.type,
scope,
})
dialog.close()
}}
/>