47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import {
|
|
LocalParticipant,
|
|
LocalTrackPublication,
|
|
Participant,
|
|
RemoteParticipant,
|
|
RemoteTrack,
|
|
RemoteTrackPublication,
|
|
Track,
|
|
} from "livekit-client";
|
|
|
|
export const handleTrackSubscribed = (
|
|
track: RemoteTrack,
|
|
publication: RemoteTrackPublication,
|
|
participant: RemoteParticipant,
|
|
) => {
|
|
if (track.kind === Track.Kind.Video || track.kind === Track.Kind.Audio) {
|
|
// attach it to a new HTMLVideoElement or HTMLAudioElement
|
|
const element = track.attach();
|
|
element.play();
|
|
}
|
|
};
|
|
|
|
export const handleTrackUnsubscribed = (
|
|
track: RemoteTrack,
|
|
publication: RemoteTrackPublication,
|
|
participant: RemoteParticipant,
|
|
) => {
|
|
// remove tracks from all attached elements
|
|
track.detach();
|
|
};
|
|
|
|
export const handleLocalTrackUnpublished = (
|
|
publication: LocalTrackPublication,
|
|
participant: LocalParticipant,
|
|
) => {
|
|
// when local tracks are ended, update UI to remove them from rendering
|
|
publication.track?.detach();
|
|
};
|
|
|
|
export const handleActiveSpeakerChange = (speakers: Participant[]) => {
|
|
// show UI indicators when participant is speaking
|
|
};
|
|
|
|
export const handleDisconnect = () => {
|
|
console.log("disconnected from room");
|
|
};
|