diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 847ea1a161..61dfa65ce1 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -2367,13 +2367,13 @@ export const webviewMessageHandler = async ( const telemetrySetting = message.text as TelemetrySetting const previousSetting = getGlobalState("telemetrySetting") || "unset" const isOptedIn = telemetrySetting !== "disabled" - const wasPreviouslyOptedIn = previousSetting !== "disabled" + const wasPreviouslyOptedIn = previousSetting !== "disabled" && previousSetting !== "unset" // If turning telemetry OFF, fire event BEFORE disabling if (wasPreviouslyOptedIn && !isOptedIn && TelemetryService.hasInstance()) { TelemetryService.instance.captureTelemetrySettingsChanged(previousSetting, telemetrySetting) } - // Update the telemetry state + // Update the telemetry state - always persist the setting await updateGlobalState("telemetrySetting", telemetrySetting) if (TelemetryService.hasInstance()) { TelemetryService.instance.updateTelemetryState(isOptedIn) diff --git a/webview-ui/src/components/common/TelemetryBanner.tsx b/webview-ui/src/components/common/TelemetryBanner.tsx index 3d39b17115..8fb1ba90f3 100644 --- a/webview-ui/src/components/common/TelemetryBanner.tsx +++ b/webview-ui/src/components/common/TelemetryBanner.tsx @@ -13,7 +13,8 @@ const TelemetryBanner = () => { const handleClose = () => { setIsDismissed(true) - vscode.postMessage({ type: "telemetrySetting", text: "enabled" satisfies TelemetrySetting }) + // When user dismisses the banner without making a choice, default to disabled + vscode.postMessage({ type: "telemetrySetting", text: "disabled" satisfies TelemetrySetting }) } const handleOpenSettings = () => {