From 7cedc308cad16fec84fd571c6d0f0559a1870b60 Mon Sep 17 00:00:00 2001 From: fkwp Date: Thu, 7 May 2026 15:10:54 +0200 Subject: [PATCH] Expose single trackCallReconnecting() entry point on PosthogAnalytics --- src/analytics/PosthogAnalytics.ts | 11 ++++++++++- .../localMember/LocalMember.test.ts | 17 ++++++----------- .../CallViewModel/localMember/LocalMember.ts | 3 +-- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/analytics/PosthogAnalytics.ts b/src/analytics/PosthogAnalytics.ts index 6ec8f8c7..0daf186a 100644 --- a/src/analytics/PosthogAnalytics.ts +++ b/src/analytics/PosthogAnalytics.ts @@ -27,6 +27,7 @@ import { CallDisconnectedEventTracker, CallConnectDurationTracker, CallReconnectingTracker, + type CallReconnectingReason, } from "./PosthogEvents"; import { Config } from "../config/Config"; import { getUrlParams } from "../UrlParams"; @@ -422,5 +423,13 @@ export class PosthogAnalytics { public eventQualitySurvey = new QualitySurveyEventTracker(); public eventCallDisconnected = new CallDisconnectedEventTracker(); public eventCallConnectDuration = new CallConnectDurationTracker(); - public eventCallReconnecting = new CallReconnectingTracker(); + private readonly _eventCallReconnecting = new CallReconnectingTracker(); + + public trackCallReconnecting( + callId: string, + reason: CallReconnectingReason, + ): void { + this._eventCallReconnecting.track(callId, reason); + this.eventCallEnded.cacheReconnecting(reason); + } } diff --git a/src/state/CallViewModel/localMember/LocalMember.test.ts b/src/state/CallViewModel/localMember/LocalMember.test.ts index 64ecdbca..c446b546 100644 --- a/src/state/CallViewModel/localMember/LocalMember.test.ts +++ b/src/state/CallViewModel/localMember/LocalMember.test.ts @@ -696,12 +696,8 @@ describe("LocalMembership", () => { it("fires CallReconnecting with the homeserver reason when homeserver disconnects", async () => { const scope = new ObservableScope(); const trackSpy = vi.spyOn( - PosthogAnalytics.instance.eventCallReconnecting, - "track", - ); - const cacheSpy = vi.spyOn( - PosthogAnalytics.instance.eventCallEnded, - "cacheReconnecting", + PosthogAnalytics.instance, + "trackCallReconnecting", ); const hsConnected$ = new BehaviorSubject(true); @@ -738,7 +734,6 @@ describe("LocalMembership", () => { defaultCreateLocalMemberValues.callId, "syncing", ); - expect(cacheSpy).toHaveBeenCalledWith("syncing"); scope.end(); }); @@ -746,8 +741,8 @@ describe("LocalMembership", () => { it("reports livekit reason when livekit disconnects but homeserver is fine", async () => { const scope = new ObservableScope(); const trackSpy = vi.spyOn( - PosthogAnalytics.instance.eventCallReconnecting, - "track", + PosthogAnalytics.instance, + "trackCallReconnecting", ); const connectionState$ = new BehaviorSubject( @@ -795,8 +790,8 @@ describe("LocalMembership", () => { it("fires one event per reconnection, not once per condition change", async () => { const scope = new ObservableScope(); const trackSpy = vi.spyOn( - PosthogAnalytics.instance.eventCallReconnecting, - "track", + PosthogAnalytics.instance, + "trackCallReconnecting", ); const hsConnected$ = new BehaviorSubject(true); diff --git a/src/state/CallViewModel/localMember/LocalMember.ts b/src/state/CallViewModel/localMember/LocalMember.ts index 58799f68..e22ffe97 100644 --- a/src/state/CallViewModel/localMember/LocalMember.ts +++ b/src/state/CallViewModel/localMember/LocalMember.ts @@ -536,8 +536,7 @@ export const createLocalMembership$ = ({ ) .subscribe(([_, homeserverReason]) => { const reason = homeserverReason !== null ? homeserverReason : "livekit"; - PosthogAnalytics.instance.eventCallReconnecting.track(callId, reason); - PosthogAnalytics.instance.eventCallEnded.cacheReconnecting(reason); + PosthogAnalytics.instance.trackCallReconnecting(callId, reason); }); // inform the widget about the connect and disconnect intent from the user.