|
|
@@ -277,6 +277,9 @@ class VideoContainer extends LargeContainer {
|
|
277
|
277
|
this.stream = stream;
|
|
278
|
278
|
this.videoType = videoType;
|
|
279
|
279
|
|
|
|
280
|
+ if(!stream)
|
|
|
281
|
+ return;
|
|
|
282
|
+
|
|
280
|
283
|
stream.attach(this.$video);
|
|
281
|
284
|
|
|
282
|
285
|
let flipX = stream.isLocal() && !this.isScreenSharing();
|
|
|
@@ -421,7 +424,7 @@ export default class LargeVideoManager {
|
|
421
|
424
|
// change the avatar url on large
|
|
422
|
425
|
this.updateAvatar(Avatar.getAvatarUrl(id));
|
|
423
|
426
|
|
|
424
|
|
- let isVideoMuted = stream.isMuted();
|
|
|
427
|
+ let isVideoMuted = stream? stream.isMuted() : true;
|
|
425
|
428
|
|
|
426
|
429
|
// show the avatar on large if needed
|
|
427
|
430
|
this.videoContainer.showAvatar(isVideoMuted);
|
|
|
@@ -443,19 +446,18 @@ export default class LargeVideoManager {
|
|
443
|
446
|
/**
|
|
444
|
447
|
* Update large video.
|
|
445
|
448
|
* Switches to large video even if previously other container was visible.
|
|
|
449
|
+ * @param userID the userID of the participant associated with the stream
|
|
446
|
450
|
* @param {JitsiTrack?} stream new stream
|
|
447
|
451
|
* @param {string?} videoType new video type
|
|
448
|
452
|
* @returns {Promise}
|
|
449
|
453
|
*/
|
|
450
|
|
- updateLargeVideo (stream, videoType) {
|
|
451
|
|
- let id = getStreamOwnerId(stream);
|
|
452
|
|
-
|
|
|
454
|
+ updateLargeVideo (userID, stream, videoType) {
|
|
453
|
455
|
if (this.newStreamData) {
|
|
454
|
456
|
this.newStreamData.reject();
|
|
455
|
457
|
}
|
|
456
|
458
|
|
|
457
|
459
|
this.newStreamData = createDeferred();
|
|
458
|
|
- this.newStreamData.id = id;
|
|
|
460
|
+ this.newStreamData.id = userID;
|
|
459
|
461
|
this.newStreamData.stream = stream;
|
|
460
|
462
|
this.newStreamData.videoType = videoType;
|
|
461
|
463
|
|