Skip to content

Commit db952ef

Browse files
authored
Merge pull request #3961 from continuedev/dallin/unsetup-analytics
Fix: Shut down team analytics on config change
2 parents de6ba31 + 436f0f5 commit db952ef

File tree

4 files changed

+29
-23
lines changed

4 files changed

+29
-23
lines changed

core/config/profile/doLoadConfig.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,14 @@ export default async function doLoadConfig(
124124

125125
if (newConfig.analytics) {
126126
await TeamAnalytics.setup(
127-
newConfig.analytics as any, // TODO: Need to get rid of index.d.ts once and for all
127+
newConfig.analytics,
128128
uniqueId,
129129
ideInfo.extensionVersion,
130130
controlPlaneClient,
131131
controlPlaneProxyInfo,
132132
);
133+
} else {
134+
await TeamAnalytics.shutdown();
133135
}
134136

135137
newConfig = await injectControlPlaneProxyInfo(

core/control-plane/TeamAnalytics.ts

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import os from "node:os";
22

3-
import { Analytics } from "@continuedev/config-types";
4-
53
import ContinueProxyAnalyticsProvider from "./analytics/ContinueProxyAnalyticsProvider.js";
64
import {
75
ControlPlaneProxyInfo,
@@ -10,9 +8,10 @@ import {
108
import LogStashAnalyticsProvider from "./analytics/LogStashAnalyticsProvider.js";
119
import PostHogAnalyticsProvider from "./analytics/PostHogAnalyticsProvider.js";
1210
import { ControlPlaneClient } from "./client.js";
11+
import { AnalyticsConfig } from "../index.js";
1312

1413
function createAnalyticsProvider(
15-
config: Analytics,
14+
config: AnalyticsConfig,
1615
): IAnalyticsProvider | undefined {
1716
// @ts-ignore
1817
switch (config.provider) {
@@ -42,7 +41,7 @@ export class TeamAnalytics {
4241
}
4342

4443
static async setup(
45-
config: Analytics,
44+
config: AnalyticsConfig,
4645
uniqueId: string,
4746
extensionVersion: string,
4847
controlPlaneClient: ControlPlaneClient,
@@ -52,22 +51,27 @@ export class TeamAnalytics {
5251
TeamAnalytics.os = os.platform();
5352
TeamAnalytics.extensionVersion = extensionVersion;
5453

55-
if (!config) {
56-
await TeamAnalytics.provider?.shutdown();
57-
TeamAnalytics.provider = undefined;
58-
} else {
59-
TeamAnalytics.provider = createAnalyticsProvider(config);
60-
await TeamAnalytics.provider?.setup(
61-
config,
62-
uniqueId,
63-
controlPlaneProxyInfo,
64-
);
54+
TeamAnalytics.provider = createAnalyticsProvider(config);
55+
await TeamAnalytics.provider?.setup(
56+
config,
57+
uniqueId,
58+
controlPlaneProxyInfo,
59+
);
60+
61+
if (config.provider === "continue-proxy") {
62+
(
63+
TeamAnalytics.provider as ContinueProxyAnalyticsProvider
64+
).controlPlaneClient = controlPlaneClient;
65+
}
66+
}
6567

66-
if (config.provider === "continue-proxy") {
67-
(
68-
TeamAnalytics.provider as ContinueProxyAnalyticsProvider
69-
).controlPlaneClient = controlPlaneClient;
70-
}
68+
static async shutdown() {
69+
if (TeamAnalytics.provider) {
70+
await TeamAnalytics.provider.shutdown();
71+
TeamAnalytics.provider = undefined;
72+
TeamAnalytics.os = undefined;
73+
TeamAnalytics.extensionVersion = undefined;
74+
TeamAnalytics.uniqueId = "NOT_UNIQUE";
7175
}
7276
}
7377
}

core/control-plane/analytics/IAnalyticsProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Analytics } from "@continuedev/config-types";
1+
import { AnalyticsConfig } from "../..";
22

33
export interface AnalyticsMetadata {
44
extensionVersion: string;
@@ -13,7 +13,7 @@ export interface ControlPlaneProxyInfo {
1313
export interface IAnalyticsProvider {
1414
capture(event: string, properties: { [key: string]: any }): Promise<void>;
1515
setup(
16-
config: Analytics,
16+
config: AnalyticsConfig,
1717
uniqueId: string,
1818
controlPlaneProxyInfo?: ControlPlaneProxyInfo,
1919
): Promise<void>;

core/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1105,7 +1105,7 @@ export interface ExperimentalConfig {
11051105
}
11061106

11071107
export interface AnalyticsConfig {
1108-
type: string;
1108+
provider: string;
11091109
url?: string;
11101110
clientKey?: string;
11111111
}

0 commit comments

Comments
 (0)