diff --git a/src/commands/discoveryService.manageCredentials/manageCredentials.ts b/src/commands/discoveryService.manageCredentials/manageCredentials.ts index 7de9b86b3..0d8981e5f 100644 --- a/src/commands/discoveryService.manageCredentials/manageCredentials.ts +++ b/src/commands/discoveryService.manageCredentials/manageCredentials.ts @@ -45,15 +45,9 @@ export async function manageCredentials(context: IActionContext, node: TreeEleme return; } - try { - // Call the filter function provided by the provider - await provider.configureCredentials(context, node as TreeElement); + // Call the filter function provided by the provider + await provider.configureCredentials(context, node as TreeElement); - // Refresh the discovery branch data provider to show the updated list - ext.discoveryBranchDataProvider.refresh(node as TreeElement); - } catch (error) { - context.telemetry.properties.result = 'Failed'; - context.telemetry.properties.errorReason = 'configureCredentialsThrew'; - throw error; - } + // Refresh the discovery branch data provider to show the updated list + ext.discoveryBranchDataProvider.refresh(node as TreeElement); } diff --git a/src/extension.ts b/src/extension.ts index 212df000b..3cd8258dd 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -94,10 +94,9 @@ export async function activateInternal( const enableAIQueryGeneration = vscode.workspace .getConfiguration() - .get(ext.settingsKeys.enableAIQueryGeneration, false) - .toString(); + .get(ext.settingsKeys.enableAIQueryGeneration, false); - telemetryContext.telemetry.properties.enableAIQueryGeneration = enableAIQueryGeneration; + telemetryContext.telemetry.properties.enableAIQueryGeneration = enableAIQueryGeneration ? 'true' : 'false'; }); // Create the DocumentDB Extension API v0.2.0 diff --git a/src/plugins/api-shared/azure/subscriptionFiltering/FilterTenantSubStep.ts b/src/plugins/api-shared/azure/subscriptionFiltering/FilterTenantSubStep.ts index faacb854f..4e0ecdb0a 100644 --- a/src/plugins/api-shared/azure/subscriptionFiltering/FilterTenantSubStep.ts +++ b/src/plugins/api-shared/azure/subscriptionFiltering/FilterTenantSubStep.ts @@ -79,10 +79,9 @@ export class FilterTenantSubStep extends AzureWizardPromptStep 1) { context.telemetry.properties.filteringFlow = 'multiTenant'; diff --git a/src/plugins/service-azure-mongo-ru/utils/ruClusterHelpers.ts b/src/plugins/service-azure-mongo-ru/utils/ruClusterHelpers.ts index 104f51fe1..f457d110c 100644 --- a/src/plugins/service-azure-mongo-ru/utils/ruClusterHelpers.ts +++ b/src/plugins/service-azure-mongo-ru/utils/ruClusterHelpers.ts @@ -95,7 +95,7 @@ export async function extractCredentialsFromRUAccount( }; // Add telemetry properties from subscription - context.telemetry.properties.isCustomCloud = subscription.isCustomCloud.toString(); + context.telemetry.properties.isCustomCloud = subscription.isCustomCloud ? 'true' : 'false'; return clusterCredentials; } diff --git a/src/plugins/service-azure-mongo-vcore/utils/clusterHelpers.ts b/src/plugins/service-azure-mongo-vcore/utils/clusterHelpers.ts index 8f6d04786..6f3fba5c8 100644 --- a/src/plugins/service-azure-mongo-vcore/utils/clusterHelpers.ts +++ b/src/plugins/service-azure-mongo-vcore/utils/clusterHelpers.ts @@ -100,7 +100,7 @@ export function extractCredentialsFromCluster( const allowedModes = clusterInformation.properties?.authConfig?.allowedModes ?? []; context.telemetry.properties.receivedAuthMethods = allowedModes.join(','); - context.telemetry.properties.receivedAuthMethodsCount = allowedModes.length.toString(); + context.telemetry.measurements.receivedAuthMethodsCount = allowedModes.length; credentials.availableAuthMethods = allowedModes.filter(isSupportedAuthMethod); @@ -115,7 +115,7 @@ export function extractCredentialsFromCluster( } // Add telemetry properties from subscription - context.telemetry.properties.isCustomCloud = subscription.isCustomCloud.toString(); + context.telemetry.properties.isCustomCloud = subscription.isCustomCloud ? 'true' : 'false'; return credentials; } diff --git a/src/services/taskService/tasks/copy-and-paste/CopyPasteCollectionTask.ts b/src/services/taskService/tasks/copy-and-paste/CopyPasteCollectionTask.ts index e90853341..a7917c09c 100644 --- a/src/services/taskService/tasks/copy-and-paste/CopyPasteCollectionTask.ts +++ b/src/services/taskService/tasks/copy-and-paste/CopyPasteCollectionTask.ts @@ -189,9 +189,8 @@ export class CopyPasteCollectionTask extends Task implements ResourceTrackingTas // Add copy-paste specific telemetry properties if (context) { context.telemetry.properties.onConflict = this.config.onConflict; - context.telemetry.properties.isCrossConnection = ( - this.config.source.clusterId !== this.config.target.clusterId - ).toString(); + context.telemetry.properties.isCrossConnection = + this.config.source.clusterId !== this.config.target.clusterId ? 'true' : 'false'; // Collect cluster metadata for source and target connections and await their completion (non-blocking for errors) const metadataPromises = [this.collectClusterMetadata(this.config.source.clusterId, 'source', context)]; @@ -229,7 +228,7 @@ export class CopyPasteCollectionTask extends Task implements ResourceTrackingTas // Add telemetry about whether the target was created if (context) { - context.telemetry.properties.targetWasCreated = ensureTargetResult.targetWasCreated.toString(); + context.telemetry.properties.targetWasCreated = ensureTargetResult.targetWasCreated ? 'true' : 'false'; } } catch (error) { throw new Error(vscode.l10n.t('Failed to ensure the target collection exists.'), { diff --git a/src/utils/survey.ts b/src/utils/survey.ts index 719f9820e..50ac20ccc 100644 --- a/src/utils/survey.ts +++ b/src/utils/survey.ts @@ -108,12 +108,12 @@ export function countUsageForSurvey(score: UsageImpact | number): void { */ export async function promptAfterActionEventually(score: UsageImpact | number, triggerAction?: string): Promise { await callWithTelemetryAndErrorHandling('survey.measure-score', async (context: IActionContext) => { - context.telemetry.properties.triggerActionScore = score.toString(); + context.telemetry.measurements.triggerActionScore = typeof score === 'number' ? score : Number(score); context.telemetry.properties.triggerAction = triggerAction; const globalOptOut = getIsSurveyDisabledGlobally(); - context.telemetry.properties.isSurveyDisabledGlobally = globalOptOut.toString(); - context.telemetry.properties.wasPromptedInSession = surveyState.wasPromptedInSession.toString(); + context.telemetry.properties.isSurveyDisabledGlobally = globalOptOut ? 'true' : 'false'; + context.telemetry.properties.wasPromptedInSession = surveyState.wasPromptedInSession ? 'true' : 'false'; if (globalOptOut || surveyState.wasPromptedInSession) { return; @@ -122,14 +122,14 @@ export async function promptAfterActionEventually(score: UsageImpact | number, t countUsageForSurvey(score); const fullScore = surveyState.usageScore; - context.telemetry.properties.fullScore = fullScore.toString(); + context.telemetry.measurements.fullScore = fullScore; const scoreTargetReached = fullScore >= SurveyConfig.scoring.REQUIRED_SCORE; - context.telemetry.properties.scoreTargetReached = scoreTargetReached.toString(); + context.telemetry.properties.scoreTargetReached = scoreTargetReached ? 'true' : 'false'; if (scoreTargetReached) { const isCandidate = await getIsSurveyCandidate(); - context.telemetry.properties.isCandidate = isCandidate.toString(); + context.telemetry.properties.isCandidate = isCandidate ? 'true' : 'false'; await surveyPromptIfCandidate(triggerAction); } }); @@ -154,7 +154,7 @@ async function initSurvey(): Promise { ): boolean => { surveyState.isCandidate = isCandidate; context.telemetry.properties.reason = reason; - context.telemetry.properties.isCandidate = isCandidate.toString(); + context.telemetry.properties.isCandidate = isCandidate ? 'true' : 'false'; // Add any additional properties Object.entries(extraProps).forEach(([key, value]) => { @@ -257,7 +257,7 @@ async function initSurvey(): Promise { const acceptedForABTest = normalized < SurveyConfig.settings.A_B_TEST_SELECTION; return setCandidateStatus(acceptedForABTest, '07_not_in_ab_test_group', { - acceptedForABTest: acceptedForABTest.toString(), + acceptedForABTest: acceptedForABTest ? 'true' : 'false', normalizedValue: normalized.toFixed(6), }); } catch (error) { @@ -277,7 +277,7 @@ async function surveyPromptIfCandidate(triggerAction?: string): Promise { } await callWithTelemetryAndErrorHandling('survey.prompt', async (context: IActionContext) => { const isCandidate = await getIsSurveyCandidate(); - context.telemetry.properties.isCandidate = isCandidate.toString(); + context.telemetry.properties.isCandidate = isCandidate ? 'true' : 'false'; context.telemetry.properties.triggerAction = triggerAction; context.telemetry.properties.userAsked = 'false'; // this will be set to 'true' later if the user interacts with the prompt surveyState.wasPromptedInSession = true; // disarm for the rest of the session diff --git a/src/webviews/documentdb/collectionView/collectionViewRouter.ts b/src/webviews/documentdb/collectionView/collectionViewRouter.ts index fa494ab7d..b8dfa4f0f 100644 --- a/src/webviews/documentdb/collectionView/collectionViewRouter.ts +++ b/src/webviews/documentdb/collectionView/collectionViewRouter.ts @@ -271,7 +271,7 @@ export const collectionsViewRouter = router({ void callWithTelemetryAndErrorHandling('documentDB.query.executionIntent', (telemetryCtx) => { telemetryCtx.errorHandling.suppressDisplay = true; telemetryCtx.telemetry.properties.intent = executionIntent; - telemetryCtx.telemetry.properties.pageNumber = input.pageNumber.toString(); + telemetryCtx.telemetry.measurements.pageNumber = input.pageNumber; telemetryCtx.telemetry.measurements.documentCount = size; });