Check for existing track before creating one. (#1459)
Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
@@ -17,8 +17,10 @@ limitations under the License.
|
|||||||
import {
|
import {
|
||||||
AudioCaptureOptions,
|
AudioCaptureOptions,
|
||||||
ConnectionState,
|
ConnectionState,
|
||||||
|
LocalTrackPublication,
|
||||||
Room,
|
Room,
|
||||||
RoomEvent,
|
RoomEvent,
|
||||||
|
Track,
|
||||||
} from "livekit-client";
|
} from "livekit-client";
|
||||||
import { useCallback, useEffect, useRef, useState } from "react";
|
import { useCallback, useEffect, useRef, useState } from "react";
|
||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
@@ -54,16 +56,24 @@ async function doConnect(
|
|||||||
audioOptions: AudioCaptureOptions
|
audioOptions: AudioCaptureOptions
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
await livekitRoom!.connect(sfuConfig!.url, sfuConfig!.jwt);
|
await livekitRoom!.connect(sfuConfig!.url, sfuConfig!.jwt);
|
||||||
const audioTracks = await livekitRoom!.localParticipant.createTracks({
|
const hasMicrophoneTrack = Array.from(
|
||||||
audio: audioOptions,
|
livekitRoom?.localParticipant.audioTracks.values()
|
||||||
|
).some((track: LocalTrackPublication) => {
|
||||||
|
return track.source == Track.Source.Microphone;
|
||||||
});
|
});
|
||||||
if (audioTracks.length < 1) {
|
// We create a track in case there isn't any.
|
||||||
logger.info("Tried to pre-create local audio track but got no tracks");
|
if (!hasMicrophoneTrack) {
|
||||||
return;
|
const audioTracks = await livekitRoom!.localParticipant.createTracks({
|
||||||
}
|
audio: audioOptions,
|
||||||
if (!audioEnabled) await audioTracks[0].mute();
|
});
|
||||||
|
if (audioTracks.length < 1) {
|
||||||
|
logger.info("Tried to pre-create local audio track but got no tracks");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!audioEnabled) await audioTracks[0].mute();
|
||||||
|
|
||||||
await livekitRoom?.localParticipant.publishTrack(audioTracks[0]);
|
await livekitRoom?.localParticipant.publishTrack(audioTracks[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useECConnectionState(
|
export function useECConnectionState(
|
||||||
|
|||||||
Reference in New Issue
Block a user