(fix): rename big -> grid, small -> focused
This commit is contained in:
parent
36902e340a
commit
3768488e49
5 changed files with 54 additions and 0 deletions
|
|
@ -13,6 +13,7 @@ import {
|
||||||
LocalAudioTrack,
|
LocalAudioTrack,
|
||||||
Room,
|
Room,
|
||||||
RoomEvent,
|
RoomEvent,
|
||||||
|
type RemoteTrack,
|
||||||
Track,
|
Track,
|
||||||
} from "livekit-client";
|
} from "livekit-client";
|
||||||
import z from "zod";
|
import z from "zod";
|
||||||
|
|
@ -80,6 +81,37 @@ const room = new Room({
|
||||||
worker: e2eeWorker,
|
worker: e2eeWorker,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
const remoteAudioElements = new Map<string, HTMLMediaElement>();
|
||||||
|
|
||||||
|
function attachRemoteAudio(trackSid: string, element: HTMLMediaElement) {
|
||||||
|
const existingElement = remoteAudioElements.get(trackSid);
|
||||||
|
|
||||||
|
if (existingElement) {
|
||||||
|
existingElement.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
element.autoplay = true;
|
||||||
|
element.style.display = "none";
|
||||||
|
document.body.appendChild(element);
|
||||||
|
remoteAudioElements.set(trackSid, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
function detachRemoteAudio(trackSid: string) {
|
||||||
|
const element = remoteAudioElements.get(trackSid);
|
||||||
|
|
||||||
|
if (!element) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
element.remove();
|
||||||
|
remoteAudioElements.delete(trackSid);
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearRemoteAudio() {
|
||||||
|
for (const trackSid of remoteAudioElements.keys()) {
|
||||||
|
detachRemoteAudio(trackSid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function requireRuntime(runtime: Runtime | null): Runtime {
|
function requireRuntime(runtime: Runtime | null): Runtime {
|
||||||
if (!runtime) {
|
if (!runtime) {
|
||||||
|
|
@ -495,9 +527,28 @@ export function useInitializeCall() {
|
||||||
void ensureNoiseFilter(noiseFilter);
|
void ensureNoiseFilter(noiseFilter);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onTrackSubscribed = (track: RemoteTrack) => {
|
||||||
|
if (track.kind !== "audio" || !track.sid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
attachRemoteAudio(track.sid, track.attach());
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTrackUnsubscribed = (track: RemoteTrack) => {
|
||||||
|
if (track.kind !== "audio" || !track.sid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
track.detach();
|
||||||
|
detachRemoteAudio(track.sid);
|
||||||
|
};
|
||||||
|
|
||||||
room.on(RoomEvent.Connected, onConnected);
|
room.on(RoomEvent.Connected, onConnected);
|
||||||
room.on(RoomEvent.Reconnected, onConnected);
|
room.on(RoomEvent.Reconnected, onConnected);
|
||||||
room.on(RoomEvent.Disconnected, onDisconnected);
|
room.on(RoomEvent.Disconnected, onDisconnected);
|
||||||
|
room.on(RoomEvent.TrackSubscribed, onTrackSubscribed);
|
||||||
|
room.on(RoomEvent.TrackUnsubscribed, onTrackUnsubscribed);
|
||||||
room.on(RoomEvent.TrackMuted, onParticipantStateChange);
|
room.on(RoomEvent.TrackMuted, onParticipantStateChange);
|
||||||
room.on(RoomEvent.TrackUnmuted, onParticipantStateChange);
|
room.on(RoomEvent.TrackUnmuted, onParticipantStateChange);
|
||||||
room.on(RoomEvent.LocalTrackPublished, onParticipantStateChange);
|
room.on(RoomEvent.LocalTrackPublished, onParticipantStateChange);
|
||||||
|
|
@ -513,6 +564,8 @@ export function useInitializeCall() {
|
||||||
room.off(RoomEvent.Connected, onConnected);
|
room.off(RoomEvent.Connected, onConnected);
|
||||||
room.off(RoomEvent.Reconnected, onConnected);
|
room.off(RoomEvent.Reconnected, onConnected);
|
||||||
room.off(RoomEvent.Disconnected, onDisconnected);
|
room.off(RoomEvent.Disconnected, onDisconnected);
|
||||||
|
room.off(RoomEvent.TrackSubscribed, onTrackSubscribed);
|
||||||
|
room.off(RoomEvent.TrackUnsubscribed, onTrackUnsubscribed);
|
||||||
room.off(RoomEvent.TrackMuted, onParticipantStateChange);
|
room.off(RoomEvent.TrackMuted, onParticipantStateChange);
|
||||||
room.off(RoomEvent.TrackUnmuted, onParticipantStateChange);
|
room.off(RoomEvent.TrackUnmuted, onParticipantStateChange);
|
||||||
room.off(RoomEvent.LocalTrackPublished, onParticipantStateChange);
|
room.off(RoomEvent.LocalTrackPublished, onParticipantStateChange);
|
||||||
|
|
@ -520,6 +573,7 @@ export function useInitializeCall() {
|
||||||
room.off(RoomEvent.MediaDevicesError, onMediaDeviceFailure);
|
room.off(RoomEvent.MediaDevicesError, onMediaDeviceFailure);
|
||||||
room.off(RoomEvent.EncryptionError, onEncryptionError);
|
room.off(RoomEvent.EncryptionError, onEncryptionError);
|
||||||
room.off(RoomEvent.ConnectionStateChanged, onParticipantStateChange);
|
room.off(RoomEvent.ConnectionStateChanged, onParticipantStateChange);
|
||||||
|
clearRemoteAudio();
|
||||||
listenersRegistered.current = false;
|
listenersRegistered.current = false;
|
||||||
room.disconnect();
|
room.disconnect();
|
||||||
e2eeWorker.terminate();
|
e2eeWorker.terminate();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue