From ed35d6b3778adff519cb0e9778ae2c31e47bda6a Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Mon, 23 Sep 2024 14:35:41 +0100 Subject: [PATCH] Posthog improvements (#2630) --- src/analytics/PosthogAnalytics.ts | 4 ++++ src/analytics/PosthogEvents.ts | 15 +++++++++++++++ src/room/GroupCallView.tsx | 1 + 3 files changed, 20 insertions(+) diff --git a/src/analytics/PosthogAnalytics.ts b/src/analytics/PosthogAnalytics.ts index f66a5ab7..0df0ee32 100644 --- a/src/analytics/PosthogAnalytics.ts +++ b/src/analytics/PosthogAnalytics.ts @@ -64,6 +64,7 @@ interface PlatformProperties { appVersion: string; matrixBackend: "embedded" | "jssdk"; callBackend: "livekit" | "full-mesh"; + cryptoVersion?: string; } interface PosthogSettings { @@ -184,6 +185,9 @@ export class PosthogAnalytics { appVersion, matrixBackend: widget ? "embedded" : "jssdk", callBackend: "livekit", + cryptoVersion: widget + ? undefined + : window.matrixclient?.getCrypto()?.getVersion(), }; } diff --git a/src/analytics/PosthogEvents.ts b/src/analytics/PosthogEvents.ts index 86e35fb5..ca086dc2 100644 --- a/src/analytics/PosthogEvents.ts +++ b/src/analytics/PosthogEvents.ts @@ -7,6 +7,7 @@ Please see LICENSE in the repository root for full details. import { DisconnectReason } from "livekit-client"; import { logger } from "matrix-js-sdk/src/logger"; +import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc"; import { IPosthogEvent, @@ -20,6 +21,9 @@ interface CallEnded extends IPosthogEvent { callParticipantsOnLeave: number; callParticipantsMax: number; callDuration: number; + roomEventEncryptionKeysSent: number; + roomEventEncryptionKeysReceived: number; + roomEventEncryptionKeysReceivedAverageAge: number; } export class CallEndedTracker { @@ -43,6 +47,7 @@ export class CallEndedTracker { callId: string, callParticipantsNow: number, sendInstantly: boolean, + rtcSession: MatrixRTCSession, ): void { PosthogAnalytics.instance.trackEvent( { @@ -51,6 +56,16 @@ export class CallEndedTracker { callParticipantsMax: this.cache.maxParticipantsCount, callParticipantsOnLeave: callParticipantsNow, callDuration: (Date.now() - this.cache.startTime.getTime()) / 1000, + roomEventEncryptionKeysSent: + rtcSession.statistics.counters.roomEventEncryptionKeysSent, + roomEventEncryptionKeysReceived: + rtcSession.statistics.counters.roomEventEncryptionKeysReceived, + roomEventEncryptionKeysReceivedAverageAge: + rtcSession.statistics.counters.roomEventEncryptionKeysReceived > 0 + ? rtcSession.statistics.totals + .roomEventEncryptionKeysReceivedTotalAge / + rtcSession.statistics.counters.roomEventEncryptionKeysReceived + : 0, }, { send_instantly: sendInstantly }, ); diff --git a/src/room/GroupCallView.tsx b/src/room/GroupCallView.tsx index 6892262b..88d79140 100644 --- a/src/room/GroupCallView.tsx +++ b/src/room/GroupCallView.tsx @@ -219,6 +219,7 @@ export const GroupCallView: FC = ({ rtcSession.room.roomId, rtcSession.memberships.length, sendInstantly, + rtcSession, ); // Only sends matrix leave event. The Livekit session will disconnect once the ActiveCall-view unmounts.