remove user from VideoLayout
This commit is contained in:
parent
6ded050b51
commit
36874c395a
|
@ -74,6 +74,25 @@ $(ContactList).bind('contactclicked', function(event, id) {
|
|||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Returns the corresponding resource id to the given peer container
|
||||
* DOM element.
|
||||
*
|
||||
* @return the corresponding resource id to the given peer container
|
||||
* DOM element
|
||||
*/
|
||||
function getPeerContainerResourceId (containerElement) {
|
||||
if (localVideoThumbnail.container === containerElement) {
|
||||
return localVideoThumbnail.id;
|
||||
}
|
||||
|
||||
let i = containerElement.id.indexOf('participant_');
|
||||
|
||||
if (i >= 0) {
|
||||
return containerElement.id.substring(i + 12);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var VideoLayout = {
|
||||
init (emitter) {
|
||||
|
@ -168,58 +187,57 @@ var VideoLayout = {
|
|||
* another one instead.
|
||||
*/
|
||||
updateRemovedVideo (id) {
|
||||
if (id !== LargeVideo.getId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
let newId;
|
||||
|
||||
if (id === LargeVideo.getId()) {
|
||||
// We'll show user's avatar if he is the dominant speaker or if
|
||||
// his video thumbnail is pinned
|
||||
if (remoteVideos[id] &&
|
||||
id === focusedVideoResourceJid ||
|
||||
id === currentDominantSpeaker) {
|
||||
newId = id;
|
||||
} else {
|
||||
// Otherwise select last visible video
|
||||
newId = this.electLastVisibleVideo();
|
||||
}
|
||||
LargeVideo.updateLargeVideo(id);
|
||||
// We'll show user's avatar if he is the dominant speaker or if
|
||||
// his video thumbnail is pinned
|
||||
if (remoteVideos[id] && (id === focusedVideoResourceJid || id === currentDominantSpeaker)) {
|
||||
newId = id;
|
||||
} else {
|
||||
// Otherwise select last visible video
|
||||
newId = this.electLastVisibleVideo();
|
||||
}
|
||||
|
||||
LargeVideo.updateLargeVideo(newId);
|
||||
},
|
||||
|
||||
electLastVisibleVideo () {
|
||||
// pick the last visible video in the row
|
||||
// if nobody else is left, this picks the local video
|
||||
var jid;
|
||||
var pick = $('#remoteVideos>span[id!="mixedstream"]:visible:last');
|
||||
let pick = $('#remoteVideos>span[id!="mixedstream"]:visible:last');
|
||||
if (pick.length) {
|
||||
jid = VideoLayout.getPeerContainerResourceJid(pick[0]);
|
||||
if (!remoteVideos[jid]) {
|
||||
// The RemoteVideo was removed (but the DOM elements may still
|
||||
// exist).
|
||||
jid = null;
|
||||
let id = getPeerContainerResourceId(pick[0]);
|
||||
if (remoteVideos[id]) {
|
||||
console.info("electLastVisibleVideo: " + id);
|
||||
return id;
|
||||
}
|
||||
// The RemoteVideo was removed (but the DOM elements may still
|
||||
// exist).
|
||||
}
|
||||
|
||||
if (!jid) {
|
||||
console.info("Last visible video no longer exists");
|
||||
pick = $('#remoteVideos>span[id!="mixedstream"]');
|
||||
if (pick.length) {
|
||||
jid = VideoLayout.getPeerContainerResourceJid(pick[0]);
|
||||
if (!remoteVideos[jid]) {
|
||||
// The RemoteVideo was removed (but the DOM elements may
|
||||
// still exist).
|
||||
jid = null;
|
||||
}
|
||||
console.info("Last visible video no longer exists");
|
||||
pick = $('#remoteVideos>span[id!="mixedstream"]');
|
||||
if (pick.length) {
|
||||
let id = getPeerContainerResourceId(pick[0]);
|
||||
if (remoteVideos[id]) {
|
||||
console.info("electLastVisibleVideo: " + id);
|
||||
return id;
|
||||
}
|
||||
// The RemoteVideo was removed (but the DOM elements may
|
||||
// still exist).
|
||||
}
|
||||
|
||||
if (!jid) {
|
||||
// Go with local video
|
||||
console.info("Fallback to local video...");
|
||||
jid = APP.xmpp.myResource();
|
||||
}
|
||||
// Go with local video
|
||||
console.info("Fallback to local video...");
|
||||
|
||||
console.info("electLastVisibleVideo: " + jid);
|
||||
return jid;
|
||||
let id = APP.conference.localId;
|
||||
console.info("electLastVisibleVideo: " + id);
|
||||
|
||||
return id;
|
||||
},
|
||||
|
||||
onRemoteStreamAdded (stream) {
|
||||
|
@ -508,24 +526,6 @@ var VideoLayout = {
|
|||
return [availableWidth, availableHeight];
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the corresponding resource jid to the given peer container
|
||||
* DOM element.
|
||||
*
|
||||
* @return the corresponding resource jid to the given peer container
|
||||
* DOM element
|
||||
*/
|
||||
getPeerContainerResourceJid (containerElement) {
|
||||
if (localVideoThumbnail.container === containerElement) {
|
||||
return localVideoThumbnail.getId();
|
||||
}
|
||||
|
||||
var i = containerElement.id.indexOf('participant_');
|
||||
|
||||
if (i >= 0)
|
||||
return containerElement.id.substring(i + 12);
|
||||
},
|
||||
|
||||
/**
|
||||
* On audio muted event.
|
||||
*/
|
||||
|
@ -671,7 +671,7 @@ var VideoLayout = {
|
|||
|
||||
// Handle LastN/local LastN changes.
|
||||
$('#remoteVideos>span').each(function( index, element ) {
|
||||
var resourceJid = VideoLayout.getPeerContainerResourceJid(element);
|
||||
var resourceJid = getPeerContainerResourceId(element);
|
||||
|
||||
// We do not want to process any logic for our own(local) video
|
||||
// because the local participant is never in the lastN set.
|
||||
|
|
Loading…
Reference in New Issue