Default 'streamDestroyed' behaviour. 'preventDefault()' method exposed

pull/3/merge
pabloFuente 2017-04-17 16:23:30 +02:00
parent a68652cdd4
commit 153a19b626
3 changed files with 24 additions and 4 deletions

View File

@ -282,6 +282,10 @@ export class Session {
let streams = participant.getStreams(); let streams = participant.getStreams();
for ( let key in streams ) { for ( let key in streams ) {
this.ee.emitEvent( 'stream-removed', [{ this.ee.emitEvent( 'stream-removed', [{
stream: streams[key],
preventDefault: () => {this.ee.removeEvent('stream-removed-default');}
}] );
this.ee.emitEvent( 'stream-removed-default', [{
stream: streams[key] stream: streams[key]
}] ); }] );

View File

@ -70,6 +70,7 @@ export class Stream {
private dataChannelOpened = false; private dataChannelOpened = false;
private videoSrc: string; private videoSrc: string;
private parentId: string;
public isReady: boolean = false; public isReady: boolean = false;
constructor(private openVidu: OpenVidu, private local: boolean, private room: Session, options: StreamOptions) { constructor(private openVidu: OpenVidu, private local: boolean, private room: Session, options: StreamOptions) {
@ -109,9 +110,17 @@ export class Stream {
return this.videoSrc; return this.videoSrc;
} }
removeVideo(parentElement) { removeVideo(parentElement?) {
if (parentElement) {
document.getElementById(parentElement)!.removeChild(this.video); document.getElementById(parentElement)!.removeChild(this.video);
} else {
if (document.getElementById(this.parentId)) {
document.getElementById(this.parentId)!.removeChild(this.video);
} }
}
}
@ -229,11 +238,14 @@ export class Stream {
} }
if (typeof parentElement === "string") { if (typeof parentElement === "string") {
this.parentId = parentElement;
let parentElementDom = document.getElementById(parentElement); let parentElementDom = document.getElementById(parentElement);
if (parentElementDom) { if (parentElementDom) {
this.video = parentElementDom.appendChild(this.video); this.video = parentElementDom.appendChild(this.video);
} }
} else { } else {
this.parentId = parentElement.id;
this.video = parentElement.appendChild(this.video); this.video = parentElement.appendChild(this.video);
} }

View File

@ -6,7 +6,11 @@ import { PublisherTokBox } from './PublisherTokBox';
export class SessionTokBox { export class SessionTokBox {
constructor(private session: Session, private openVidu: OpenViduTokBox) { } constructor(private session: Session, private openVidu: OpenViduTokBox) {
this.session.addEventListener('stream-removed-default', event => {
event.stream.removeVideo();
});
}
connect(token, callback) { connect(token, callback) {
// Early configuration to deactivate automatic subscription to streams // Early configuration to deactivate automatic subscription to streams