From a9c74172a5cb5d35f25067cefb7e2ad3d8a67e97 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Oct 2023 16:07:46 +0100 Subject: [PATCH 1/3] Add logging & guards for mic pre-creation & focus Logs & guard for pre-recating the mic track as well as logging what we select as the active focus (JWT URL + livekit alias). --- src/livekit/useECConnectionState.ts | 17 +++++++++++++++++ src/room/useActiveFocus.ts | 12 +++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/livekit/useECConnectionState.ts b/src/livekit/useECConnectionState.ts index 0b18cd10..f74525b4 100644 --- a/src/livekit/useECConnectionState.ts +++ b/src/livekit/useECConnectionState.ts @@ -19,6 +19,7 @@ import { ConnectionState, Room, RoomEvent, + Track, } from "livekit-client"; import { useCallback, useEffect, useRef, useState } from "react"; import { logger } from "matrix-js-sdk/src/logger"; @@ -60,6 +61,14 @@ async function doConnect( // doesn't publish it until you unmute. We want to publish it from the start so we're // always capturing audio: it helps keep bluetooth headsets in the right mode and // mobile browsers to know we're doing a call. + if (livekitRoom!.localParticipant.getTrack(Track.Source.Microphone)) { + logger.warn( + "Pre-creating audio track but participant already appears to have an microphone track: this shouldn't happen!" + ); + return; + } + + logger.info("Pre-creating microphone track"); const audioTracks = await livekitRoom!.localParticipant.createTracks({ audio: audioOptions, }); @@ -69,6 +78,14 @@ async function doConnect( } if (!audioEnabled) await audioTracks[0].mute(); + // check again having awaited for the track to create + if (livekitRoom!.localParticipant.getTrack(Track.Source.Microphone)) { + logger.warn( + "Publishing pre-created audio track but participant already appears to have an microphone track: this shouldn't happen!" + ); + return; + } + logger.info("Publishing pre-created mic track"); await livekitRoom?.localParticipant.publishTrack(audioTracks[0]); } diff --git a/src/room/useActiveFocus.ts b/src/room/useActiveFocus.ts index 022b25ac..8b520417 100644 --- a/src/room/useActiveFocus.ts +++ b/src/room/useActiveFocus.ts @@ -20,6 +20,7 @@ import { } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession"; import { useCallback, useEffect, useState } from "react"; import { deepCompare } from "matrix-js-sdk/src/utils"; +import { logger } from "matrix-js-sdk/src/logger"; import { LivekitFocus } from "../livekit/LivekitFocus"; @@ -27,7 +28,16 @@ function getActiveFocus( rtcSession: MatrixRTCSession, ): LivekitFocus | undefined { const oldestMembership = rtcSession.getOldestMembership(); - return oldestMembership?.getActiveFoci()[0] as LivekitFocus; + const focus = oldestMembership?.getActiveFoci()[0] as LivekitFocus; + + if (focus) { + logger.info( + `Got active focus for call from ${oldestMembership?.sender}/${oldestMembership?.deviceId}`, + focus + ); + } + + return focus; } /** From 11664a5bf66f216588cd2523d2c18f696952ec11 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Oct 2023 16:27:17 +0100 Subject: [PATCH 2/3] Prettier --- src/livekit/useECConnectionState.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/livekit/useECConnectionState.ts b/src/livekit/useECConnectionState.ts index f74525b4..32fe7415 100644 --- a/src/livekit/useECConnectionState.ts +++ b/src/livekit/useECConnectionState.ts @@ -63,7 +63,7 @@ async function doConnect( // mobile browsers to know we're doing a call. if (livekitRoom!.localParticipant.getTrack(Track.Source.Microphone)) { logger.warn( - "Pre-creating audio track but participant already appears to have an microphone track: this shouldn't happen!" + "Pre-creating audio track but participant already appears to have an microphone track: this shouldn't happen!", ); return; } @@ -81,7 +81,7 @@ async function doConnect( // check again having awaited for the track to create if (livekitRoom!.localParticipant.getTrack(Track.Source.Microphone)) { logger.warn( - "Publishing pre-created audio track but participant already appears to have an microphone track: this shouldn't happen!" + "Publishing pre-created audio track but participant already appears to have an microphone track: this shouldn't happen!", ); return; } From d579acd21fb15467149d480f9d3fac9673b8f8c7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Oct 2023 16:29:08 +0100 Subject: [PATCH 3/3] Even prettier --- src/room/useActiveFocus.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/room/useActiveFocus.ts b/src/room/useActiveFocus.ts index 8b520417..b1813091 100644 --- a/src/room/useActiveFocus.ts +++ b/src/room/useActiveFocus.ts @@ -33,7 +33,7 @@ function getActiveFocus( if (focus) { logger.info( `Got active focus for call from ${oldestMembership?.sender}/${oldestMembership?.deviceId}`, - focus + focus, ); }