kod-temp
Version:
Workano Communications SDK
48 lines (47 loc) • 1.47 kB
JavaScript
/* global document */
import Workano from '../index';
class Stream {
htmlStream;
participant;
static detachStream(stream) {
stream.getTracks()
.filter((track) => track.enabled)
.forEach((track) => track.stop());
}
constructor(htmlStream, participant) {
this.htmlStream = htmlStream;
this.participant = participant;
}
attach(rawElement) {
const element = rawElement || document.createElement('video');
const isLocal = this.participant instanceof Workano.LocalParticipant;
element.autoplay = true;
element.srcObject = this.htmlStream;
element.muted = isLocal;
if (isLocal) {
// Reverse local video
element.style.transform = 'scale(-1, 1)';
}
element.onloadedmetadata = () => {
const tracks = this.htmlStream ? this.htmlStream.getVideoTracks() : [];
tracks.forEach((track) => {
track.enabled = true;
track.loaded = true;
});
};
return element;
}
detach() {
Stream.detachStream(this.htmlStream);
}
hasVideo() {
if (!this.htmlStream) {
return false;
}
return this.htmlStream.getTracks().some(track => track.kind === 'video' && track.readyState !== 'ended');
}
get id() {
return this.htmlStream ? this.htmlStream.id : null;
}
}
export default Stream;