ref(video-layout): video layout controls own updating after user leave
This commit is contained in:
parent
ec0439cbb1
commit
1e3dc20b44
|
@ -1713,7 +1713,11 @@ export default {
|
||||||
APP.store.dispatch(participantLeft(id, room));
|
APP.store.dispatch(participantLeft(id, room));
|
||||||
logger.log('USER %s LEFT', id, user);
|
logger.log('USER %s LEFT', id, user);
|
||||||
APP.API.notifyUserLeft(id);
|
APP.API.notifyUserLeft(id);
|
||||||
APP.UI.removeUser(id, user.getDisplayName());
|
APP.UI.messageHandler.participantNotification(
|
||||||
|
user.getDisplayName(),
|
||||||
|
'notify.somebody',
|
||||||
|
'disconnected',
|
||||||
|
'notify.disconnected');
|
||||||
APP.UI.onSharedVideoStop(id);
|
APP.UI.onSharedVideoStop(id);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -504,18 +504,6 @@ UI.addUser = function(user) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove user from UI.
|
|
||||||
* @param {string} id user id
|
|
||||||
* @param {string} displayName user nickname
|
|
||||||
*/
|
|
||||||
UI.removeUser = function(id, displayName) {
|
|
||||||
messageHandler.participantNotification(
|
|
||||||
displayName, 'notify.somebody', 'disconnected', 'notify.disconnected');
|
|
||||||
|
|
||||||
VideoLayout.removeParticipantContainer(id);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update videotype for specified user.
|
* Update videotype for specified user.
|
||||||
* @param {string} id user id
|
* @param {string} id user id
|
||||||
|
|
|
@ -497,7 +497,7 @@ export default class SharedVideoManager {
|
||||||
this.localAudioMutedListener);
|
this.localAudioMutedListener);
|
||||||
this.localAudioMutedListener = null;
|
this.localAudioMutedListener = null;
|
||||||
|
|
||||||
VideoLayout.removeParticipantContainer(this.url);
|
APP.store.dispatch(participantLeft(this.url, APP.conference._room));
|
||||||
|
|
||||||
VideoLayout.showLargeVideoContainer(SHARED_VIDEO_CONTAINER_TYPE, false)
|
VideoLayout.showLargeVideoContainer(SHARED_VIDEO_CONTAINER_TYPE, false)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
@ -522,8 +522,6 @@ export default class SharedVideoManager {
|
||||||
UIEvents.UPDATE_SHARED_VIDEO, null, 'removed');
|
UIEvents.UPDATE_SHARED_VIDEO, null, 'removed');
|
||||||
});
|
});
|
||||||
|
|
||||||
APP.store.dispatch(participantLeft(this.url, APP.conference._room));
|
|
||||||
|
|
||||||
this.url = null;
|
this.url = null;
|
||||||
this.isSharedVideoShown = false;
|
this.isSharedVideoShown = false;
|
||||||
this.initialAttributes = null;
|
this.initialAttributes = null;
|
||||||
|
|
|
@ -68,10 +68,6 @@ SharedVideoThumb.prototype.videoClick = function() {
|
||||||
SharedVideoThumb.prototype.remove = function() {
|
SharedVideoThumb.prototype.remove = function() {
|
||||||
logger.log('Remove shared video thumb', this.id);
|
logger.log('Remove shared video thumb', this.id);
|
||||||
|
|
||||||
// Make sure that the large video is updated if are removing its
|
|
||||||
// corresponding small video.
|
|
||||||
this.VideoLayout.updateAfterThumbRemoved(this.id);
|
|
||||||
|
|
||||||
// Remove whole container
|
// Remove whole container
|
||||||
if (this.container.parentNode) {
|
if (this.container.parentNode) {
|
||||||
this.container.parentNode.removeChild(this.container);
|
this.container.parentNode.removeChild(this.container);
|
||||||
|
|
|
@ -476,10 +476,6 @@ RemoteVideo.prototype.remove = function() {
|
||||||
|
|
||||||
this.removeRemoteVideoMenu();
|
this.removeRemoteVideoMenu();
|
||||||
|
|
||||||
// Make sure that the large video is updated if are removing its
|
|
||||||
// corresponding small video.
|
|
||||||
this.VideoLayout.updateAfterThumbRemoved(this.id);
|
|
||||||
|
|
||||||
// Remove whole container
|
// Remove whole container
|
||||||
if (this.container.parentNode) {
|
if (this.container.parentNode) {
|
||||||
this.container.parentNode.removeChild(this.container);
|
this.container.parentNode.removeChild(this.container);
|
||||||
|
|
|
@ -253,7 +253,7 @@ const VideoLayout = {
|
||||||
* Uses focusedID if any or dominantSpeakerID if any,
|
* Uses focusedID if any or dominantSpeakerID if any,
|
||||||
* otherwise elects new video, in this order.
|
* otherwise elects new video, in this order.
|
||||||
*/
|
*/
|
||||||
updateAfterThumbRemoved(id) {
|
_updateAfterThumbRemoved(id) {
|
||||||
// Always trigger an update if large video is empty.
|
// Always trigger an update if large video is empty.
|
||||||
if (!largeVideo
|
if (!largeVideo
|
||||||
|| (this.getLargeVideoID() && !this.isCurrentlyOnLarge(id))) {
|
|| (this.getLargeVideoID() && !this.isCurrentlyOnLarge(id))) {
|
||||||
|
@ -804,6 +804,7 @@ const VideoLayout = {
|
||||||
}
|
}
|
||||||
|
|
||||||
VideoLayout.resizeThumbnails();
|
VideoLayout.resizeThumbnails();
|
||||||
|
VideoLayout._updateAfterThumbRemoved(id);
|
||||||
},
|
},
|
||||||
|
|
||||||
onVideoTypeChanged(id, newVideoType) {
|
onVideoTypeChanged(id, newVideoType) {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import UIEvents from '../../../service/UI/UIEvents';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
DOMINANT_SPEAKER_CHANGED,
|
DOMINANT_SPEAKER_CHANGED,
|
||||||
|
PARTICIPANT_LEFT,
|
||||||
PARTICIPANT_UPDATED,
|
PARTICIPANT_UPDATED,
|
||||||
PIN_PARTICIPANT
|
PIN_PARTICIPANT
|
||||||
} from '../base/participants';
|
} from '../base/participants';
|
||||||
|
@ -27,6 +28,9 @@ MiddlewareRegistry.register(store => next => action => {
|
||||||
const result = next(action);
|
const result = next(action);
|
||||||
|
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
|
case PARTICIPANT_LEFT:
|
||||||
|
VideoLayout.removeParticipantContainer(action.participant.id);
|
||||||
|
break;
|
||||||
|
|
||||||
case PARTICIPANT_UPDATED: {
|
case PARTICIPANT_UPDATED: {
|
||||||
// Look for actions that triggered a change to connectionStatus. This is
|
// Look for actions that triggered a change to connectionStatus. This is
|
||||||
|
|
Loading…
Reference in New Issue