From 4a5a782333bb9e3bfe2c8513c47e80cd7d42c44e Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Fri, 20 Mar 2026 18:54:07 -0700 Subject: [PATCH] refactor(web): migrate telemetry + diagnostics to createWebTelemetry/createWebDiagnostics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - telemetry.ts: 35 → 13 lines via createWebTelemetry() - diagnostics.ts: 43 → 16 lines via createWebDiagnostics() - 14/14 web tests pass, typecheck clean --- web/src/lib/diagnostics.ts | 47 ++++++++------------------------------ web/src/lib/telemetry.ts | 30 ++++-------------------- 2 files changed, 14 insertions(+), 63 deletions(-) diff --git a/web/src/lib/diagnostics.ts b/web/src/lib/diagnostics.ts index 92be4ca..5effa19 100644 --- a/web/src/lib/diagnostics.ts +++ b/web/src/lib/diagnostics.ts @@ -1,43 +1,16 @@ "use client"; -import { DiagnosticsClient } from "@bytelyst/diagnostics-client"; +import { createWebDiagnostics } from "@bytelyst/diagnostics-client"; import { DIAGNOSTICS_URL, PRODUCT_ID } from "@/lib/product-config"; -let started = false; - -export function initDiagnostics() { - if (started) { - return DiagnosticsClient.getInstance(); - } - - const getAuthToken = () => { - if (typeof window === "undefined") { - return ""; - } - +const { init: initDiagnostics, stop: stopDiagnostics } = createWebDiagnostics({ + productId: PRODUCT_ID, + channel: "notes_web", + serverUrl: DIAGNOSTICS_URL, + getAuthToken: () => { + if (typeof window === "undefined") return ""; return localStorage.getItem(`${PRODUCT_ID}_access_token`) ?? ""; - }; + }, +}); - const client = DiagnosticsClient.getInstance({ - productId: PRODUCT_ID, - anonymousInstallId: `${PRODUCT_ID}-web-install`, - platform: "web", - channel: "notes_web", - osFamily: "macos", - appVersion: "0.1.0", - buildNumber: "1", - releaseChannel: "dev", - serverUrl: DIAGNOSTICS_URL, - getAuthToken, - pollIntervalMs: 30000, - captureConsole: false, - captureErrors: true, - captureNetwork: false, - }); - - client.start().catch(() => { - // Diagnostics is best-effort during scaffold phase. - }); - started = true; - return client; -} +export { initDiagnostics, stopDiagnostics }; diff --git a/web/src/lib/telemetry.ts b/web/src/lib/telemetry.ts index 1864008..d344d6a 100644 --- a/web/src/lib/telemetry.ts +++ b/web/src/lib/telemetry.ts @@ -1,35 +1,13 @@ "use client"; -import { createTelemetryClient } from "@bytelyst/telemetry-client"; +import { createWebTelemetry } from "@bytelyst/telemetry-client"; import { PLATFORM_SERVICE_URL, PRODUCT_ID, TELEMETRY_TRANSPORT } from "@/lib/product-config"; -let initialized = false; - -const telemetryClient = createTelemetryClient({ +const { client: telemetryClient, init: initTelemetry, trackPageView } = createWebTelemetry({ productId: PRODUCT_ID, - baseUrl: PLATFORM_SERVICE_URL, - endpoint: "/telemetry/events", - platform: "web", channel: "notes_web", + baseUrl: PLATFORM_SERVICE_URL, transport: TELEMETRY_TRANSPORT, - appVersion: "0.1.0", - buildNumber: "1", - releaseChannel: "dev", - osFamily: "other", }); -export function initTelemetry() { - if (initialized) return telemetryClient; - telemetryClient.init(); - telemetryClient.trackEvent("info", "app_shell", "web_app_initialized"); - initialized = true; - return telemetryClient; -} - -export function trackPageView(page: string) { - telemetryClient.trackEvent("info", "navigation", "page_view", { - feature: page, - }); -} - -export { telemetryClient }; +export { telemetryClient, initTelemetry, trackPageView };