Skip to content

Commit e424058

Browse files
amitjoshi438Amit Joshi
andauthored
Add telemetry events for desktop opening actions (#1315)
Add telemetry events for desktop opening actions and feature flag handling Co-authored-by: Amit Joshi <[email protected]>
1 parent c8a631e commit e424058

File tree

2 files changed

+65
-16
lines changed

2 files changed

+65
-16
lines changed

src/common/OneDSLoggerTelemetry/web/client/webExtensionTelemetryEvents.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,12 @@ export enum webExtensionTelemetryEventNames {
129129
WEB_EXTENSION_SEARCH_TEXT = "WebExtensionSearchText",
130130
WEB_EXTENSION_SEARCH_FILE = "WebExtensionSearchFile",
131131
WEB_EXTENSION_SOURCE_ATTRIBUTE_INVALID = "WebExtensionSourceAttributeInvalid",
132+
WEB_EXTENSION_OPEN_DESKTOP_CLICKED = "WebExtensionOpenDesktopClicked",
133+
WEB_EXTENSION_OPEN_DESKTOP_FEATURE_DISABLED = "WebExtensionOpenDesktopFeatureDisabled",
132134
WEB_EXTENSION_OPEN_DESKTOP_TRIGGERED = "WebExtensionOpenDesktopTriggered",
133135
WEB_EXTENSION_OPEN_DESKTOP_FAILED = "WebExtensionOpenDesktopFailed",
136+
WEB_EXTENSION_OPEN_DESKTOP_URI_OPENED = "WebExtensionOpenDesktopUriOpened",
137+
WEB_EXTENSION_OPEN_DESKTOP_DIALOG_DOWNLOAD_CLICKED = "WebExtensionOpenDesktopDialogDownloadClicked",
138+
WEB_EXTENSION_OPEN_DESKTOP_DIALOG_UPDATE_CLICKED = "WebExtensionOpenDesktopDialogUpdateClicked",
134139
WEB_EXTENSION_DUPLICATE_FOLDER_NAME_CREATED = "WebExtensionDuplicateFolderNameCreated"
135140
}

src/web/client/webViews/powerPagesNavigationProvider.ts

Lines changed: 60 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,31 @@ export class PowerPagesNavigationProvider implements vscode.TreeDataProvider<Pow
173173
}
174174

175175
openInDesktop(): void {
176+
WebExtensionContext.telemetry.sendInfoTelemetry(
177+
webExtensionTelemetryEventNames.WEB_EXTENSION_OPEN_DESKTOP_CLICKED,
178+
{
179+
hasECSFeatureGate: 'true'
180+
}
181+
);
182+
176183
try {
177184
const websiteId = WebExtensionContext.urlParametersMap?.get(PowerPagesNavigationConstants.urlParams.WEBSITE_ID);
178185
const envId = WebExtensionContext.urlParametersMap?.get(PowerPagesNavigationConstants.urlParams.ENV_ID);
179186

187+
// Check if open in desktop is enabled via ECS flag
188+
const isOpenInDesktopEnabled = ECSFeaturesClient.getConfig(EnableOpenInDesktop).enableOpenInDesktop;
189+
190+
// Track ECS feature flag status
191+
if (!isOpenInDesktopEnabled) {
192+
WebExtensionContext.telemetry.sendInfoTelemetry(
193+
webExtensionTelemetryEventNames.WEB_EXTENSION_OPEN_DESKTOP_FEATURE_DISABLED,
194+
{
195+
reason: 'ecs_feature_flag_disabled'
196+
}
197+
);
198+
return;
199+
}
200+
180201
// Validate required parameters
181202
if (!websiteId) {
182203
vscode.window.showErrorMessage(vscode.l10n.t(PowerPagesNavigationConstants.messages.WEBSITE_ID_NOT_AVAILABLE));
@@ -213,18 +234,54 @@ export class PowerPagesNavigationProvider implements vscode.TreeDataProvider<Pow
213234
return;
214235
}
215236

237+
// Track desktop flow trigger (before attempting to open)
238+
WebExtensionContext.telemetry.sendInfoTelemetry(
239+
webExtensionTelemetryEventNames.WEB_EXTENSION_OPEN_DESKTOP_TRIGGERED,
240+
{
241+
websiteId: websiteId,
242+
environmentId: environmentId,
243+
desktopUri: desktopUri
244+
}
245+
);
246+
216247
// Open in VS Code Desktop
217248
vscode.env.openExternal(vscode.Uri.parse(desktopUri));
218249

250+
// Track successful URI opening
251+
WebExtensionContext.telemetry.sendInfoTelemetry(
252+
webExtensionTelemetryEventNames.WEB_EXTENSION_OPEN_DESKTOP_URI_OPENED,
253+
{
254+
websiteId: websiteId,
255+
environmentId: environmentId,
256+
uriGenerated: PowerPagesNavigationConstants.values.TRUE,
257+
}
258+
);
259+
219260
// Show informational message with fallback options (don't await to avoid blocking)
220261
vscode.window.showInformationMessage(
221262
vscode.l10n.t(PowerPagesNavigationConstants.messages.OPENING_IN_VS_CODE_DESKTOP),
222263
vscode.l10n.t(PowerPagesNavigationConstants.messages.DOWNLOAD_VS_CODE),
223264
vscode.l10n.t(PowerPagesNavigationConstants.messages.UPDATE_EXTENSION),
224-
).then((showInstructions) => {
225-
if (showInstructions === vscode.l10n.t(PowerPagesNavigationConstants.messages.DOWNLOAD_VS_CODE)) {
265+
).then((selectedOption) => {
266+
if (selectedOption === vscode.l10n.t(PowerPagesNavigationConstants.messages.DOWNLOAD_VS_CODE)) {
267+
WebExtensionContext.telemetry.sendInfoTelemetry(
268+
webExtensionTelemetryEventNames.WEB_EXTENSION_OPEN_DESKTOP_DIALOG_DOWNLOAD_CLICKED,
269+
{
270+
websiteId: websiteId,
271+
environmentId: environmentId,
272+
action: 'download_vscode_clicked'
273+
}
274+
);
226275
vscode.env.openExternal(vscode.Uri.parse(PowerPagesNavigationConstants.urls.VS_CODE_DOWNLOAD));
227-
} else if (showInstructions === vscode.l10n.t(PowerPagesNavigationConstants.messages.UPDATE_EXTENSION)) {
276+
} else if (selectedOption === vscode.l10n.t(PowerPagesNavigationConstants.messages.UPDATE_EXTENSION)) {
277+
WebExtensionContext.telemetry.sendInfoTelemetry(
278+
webExtensionTelemetryEventNames.WEB_EXTENSION_OPEN_DESKTOP_DIALOG_UPDATE_CLICKED,
279+
{
280+
websiteId: websiteId,
281+
environmentId: environmentId,
282+
action: 'update_extension_clicked'
283+
}
284+
);
228285
vscode.env.openExternal(vscode.Uri.parse(PowerPagesNavigationConstants.urls.VS_CODE_MARKETPLACE));
229286
}
230287
});
@@ -290,19 +347,6 @@ export class PowerPagesNavigationProvider implements vscode.TreeDataProvider<Pow
290347

291348
const finalUri = `${baseUri}?${params.toString()}`;
292349

293-
// Log telemetry for successful URI generation
294-
WebExtensionContext.telemetry.sendInfoTelemetry(
295-
webExtensionTelemetryEventNames.WEB_EXTENSION_OPEN_DESKTOP_TRIGGERED,
296-
{
297-
websiteId: websiteId,
298-
environmentId: environmentId,
299-
desktopUri: finalUri,
300-
hasSiteName: siteName ? PowerPagesNavigationConstants.values.TRUE : PowerPagesNavigationConstants.values.FALSE,
301-
hasSiteUrl: params.has(PowerPagesNavigationConstants.urlParams.SITE_URL) ? PowerPagesNavigationConstants.values.TRUE : PowerPagesNavigationConstants.values.FALSE,
302-
schema: schema
303-
}
304-
);
305-
306350
return finalUri;
307351

308352
} catch (error) {

0 commit comments

Comments
 (0)