diff --git a/package.json b/package.json index ee4c5f5b3..67c1bee04 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "i18next-http-backend": "^2.0.0", "livekit-client": "^2.0.2", "lodash": "^4.17.21", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#50078b1b93b89bb94a631524ef6f673eb244a39a", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#15e49b4575b426359803f4a0cb0d97bd48bc55fc", "matrix-widget-api": "^1.8.2", "normalize.css": "^8.0.1", "observable-hooks": "^4.2.3", diff --git a/src/analytics/PosthogEvents.ts b/src/analytics/PosthogEvents.ts index 7600fb7ce..1776b4ed2 100644 --- a/src/analytics/PosthogEvents.ts +++ b/src/analytics/PosthogEvents.ts @@ -16,6 +16,7 @@ limitations under the License. import { DisconnectReason } from "livekit-client"; import { logger } from "matrix-js-sdk/src/logger"; +import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc"; import { IPosthogEvent, @@ -43,6 +44,12 @@ interface CallEnded extends IPosthogEvent { callParticipantsMax: number; callDuration: number; encryption: EncryptionScheme; + toDeviceEncryptionKeysSent: number; + toDeviceEncryptionKeysReceived: number; + toDeviceEncryptionKeysReceivedAverageAge: number; + roomEventEncryptionKeysSent: number; + roomEventEncryptionKeysReceived: number; + roomEventEncryptionKeysReceivedAverageAge: number; } export class CallEndedTracker { @@ -66,6 +73,7 @@ export class CallEndedTracker { callId: string, callParticipantsNow: number, e2eeType: E2eeType, + rtcSession: MatrixRTCSession, sendInstantly: boolean, ): void { PosthogAnalytics.instance.trackEvent( @@ -76,6 +84,26 @@ export class CallEndedTracker { callParticipantsOnLeave: callParticipantsNow, callDuration: (Date.now() - this.cache.startTime.getTime()) / 1000, encryption: mapE2eeType(e2eeType), + toDeviceEncryptionKeysSent: + rtcSession.statistics.counters.toDeviceEncryptionKeysSent, + toDeviceEncryptionKeysReceived: + rtcSession.statistics.counters.toDeviceEncryptionKeysReceived, + toDeviceEncryptionKeysReceivedAverageAge: + rtcSession.statistics.counters.toDeviceEncryptionKeysReceived > 0 + ? rtcSession.statistics.totals + .toDeviceEncryptionKeysReceivedTotalAge / + rtcSession.statistics.counters.toDeviceEncryptionKeysReceived + : 0, + 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 83c0168d0..7e9e3d604 100644 --- a/src/room/GroupCallView.tsx +++ b/src/room/GroupCallView.tsx @@ -224,6 +224,7 @@ export const GroupCallView: FC = ({ rtcSession.room.roomId, rtcSession.memberships.length, matrixInfo.e2eeSystem.kind, + rtcSession, sendInstantly, );