diff --git a/vscode/src/lsp/initializer.ts b/vscode/src/lsp/initializer.ts index dfe178b..36816b7 100644 --- a/vscode/src/lsp/initializer.ts +++ b/vscode/src/lsp/initializer.ts @@ -108,9 +108,7 @@ export const clientInit = () => { const client = NbLanguageClient.build(connection, LOGGER); LOGGER.log('Language Client: Starting'); - client.start().then(() => { - Telemetry.enqueueStartEvent(); - + client.start().then(() => { registerListenersAfterClientInit(); registerNotificationListeners(client); registerRequestListeners(client); diff --git a/vscode/src/telemetry/events/start.ts b/vscode/src/telemetry/events/start.ts index 8bb4f1c..4ae74ff 100644 --- a/vscode/src/telemetry/events/start.ts +++ b/vscode/src/telemetry/events/start.ts @@ -59,6 +59,7 @@ export class ExtensionStartEvent extends BaseEvent { } onSuccessPostEventCallback = async (): Promise => { + LOGGER.debug(`Start event sent successfully`); this.addEventToCache(); } diff --git a/vscode/src/telemetry/events/workspaceChange.ts b/vscode/src/telemetry/events/workspaceChange.ts index 2bf6214..7d57760 100644 --- a/vscode/src/telemetry/events/workspaceChange.ts +++ b/vscode/src/telemetry/events/workspaceChange.ts @@ -13,6 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +import { LOGGER } from "../../logger"; +import { Telemetry } from "../telemetry"; import { BaseEvent } from "./baseEvent"; interface ProjectInfo { @@ -30,6 +32,8 @@ export interface WorkspaceChangeData { projInitTimeTaken: number; } +let workspaceChangeEventTimeout: NodeJS.Timeout | null = null; + export class WorkspaceChangeEvent extends BaseEvent { public static readonly NAME = "workspaceChange"; public static readonly ENDPOINT = "/workspaceChange"; @@ -37,4 +41,13 @@ export class WorkspaceChangeEvent extends BaseEvent { constructor(payload: WorkspaceChangeData) { super(WorkspaceChangeEvent.NAME, WorkspaceChangeEvent.ENDPOINT, payload); } + + public onSuccessPostEventCallback = async (): Promise => { + LOGGER.debug(`WorkspaceChange event sent successfully`); + if (workspaceChangeEventTimeout != null) { + clearTimeout(workspaceChangeEventTimeout); + workspaceChangeEventTimeout = null; + } + workspaceChangeEventTimeout = setTimeout(() => Telemetry.sendTelemetry(this), 60 * 60 * 24 * 1000); + }; } \ No newline at end of file diff --git a/vscode/src/telemetry/telemetry.ts b/vscode/src/telemetry/telemetry.ts index a43623b..4e61d65 100644 --- a/vscode/src/telemetry/telemetry.ts +++ b/vscode/src/telemetry/telemetry.ts @@ -55,10 +55,6 @@ export namespace Telemetry { enqueueEvent((reporter) => reporter.addEventToQueue(event)); } - export const enqueueStartEvent = (): void => { - enqueueEvent((reporter) => reporter.startEvent()); - } - export const enqueueCloseEvent = (): void => { enqueueEvent((reporter) => reporter.closeEvent()); } diff --git a/vscode/src/telemetry/telemetryManager.ts b/vscode/src/telemetry/telemetryManager.ts index ce4e5ea..eb1c40e 100644 --- a/vscode/src/telemetry/telemetryManager.ts +++ b/vscode/src/telemetry/telemetryManager.ts @@ -69,6 +69,7 @@ export class TelemetryManager { } if (this.settings.isExtTelemetryEnabled) { this.telemetryRetryManager.startTimer(); + this.reporter?.startEvent(); } } }; \ No newline at end of file