From ba8b4df3c90d9c3123f93bab03b95baa7257ad5d Mon Sep 17 00:00:00 2001 From: "Brandon Waterloo [MSFT]" <36966225+bwateratmsft@users.noreply.github.com> Date: Thu, 11 Jun 2020 16:16:43 -0400 Subject: [PATCH] Capture eligibility state (#2063) * Capture eligibility state * Don't activate surveys during tests --- src/telemetry/surveys/SurveyManager.ts | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/telemetry/surveys/SurveyManager.ts b/src/telemetry/surveys/SurveyManager.ts index 701bb52bff..0bee0544c1 100644 --- a/src/telemetry/surveys/SurveyManager.ts +++ b/src/telemetry/surveys/SurveyManager.ts @@ -27,7 +27,7 @@ export interface Survey { export class SurveyManager { public activate(): void { - if (!ext.telemetryOptIn) { + if (!ext.telemetryOptIn || ext.runningTests) { return; } @@ -44,7 +44,22 @@ export class SurveyManager { private async executeSurvey(survey: Survey): Promise { try { - if (await this.shouldShowPrompt(survey)) { + const shouldShowPrompt: boolean = await callWithTelemetryAndErrorHandling('surveyCheck', async (context: IActionContext) => { + context.telemetry.properties.surveyId = survey.id; + context.telemetry.properties.isActivationEvent = 'true'; + + const responded = ext.context.globalState.get(`${surveyRespondedKeyPrefix}.${survey.id}`, false); + const eligible = await survey.isEligible(); + const flighted = await ext.experimentationService.isFlightEnabled(`${surveyFlightPrefix}.${survey.id}`); + + context.telemetry.properties.surveyResponded = responded.toString(); + context.telemetry.properties.surveyEligible = eligible.toString(); + context.telemetry.properties.surveyFlighted = flighted.toString(); + + return !responded && eligible && flighted; + }); + + if (shouldShowPrompt) { await callWithTelemetryAndErrorHandling('surveyResponse', async (context: IActionContext) => { context.telemetry.properties.surveyId = survey.id; context.telemetry.properties.isActivationEvent = 'true'; @@ -73,10 +88,4 @@ export class SurveyManager { return result === take; } - - private async shouldShowPrompt(survey: Survey): Promise { - return ext.context.globalState.get(`${surveyRespondedKeyPrefix}.${survey.id}`, false) !== true && - await survey.isEligible() && - await ext.experimentationService.isFlightEnabled(`${surveyFlightPrefix}.${survey.id}`); - } }