diff --git a/conference.js b/conference.js
index 91460f30f..e14cb6e23 100644
--- a/conference.js
+++ b/conference.js
@@ -1237,6 +1237,7 @@ export default {
= connection.initJitsiConference(
APP.conference.roomName,
this._getConferenceOptions());
+
APP.store.dispatch(conferenceWillJoin(room));
this._setLocalAudioVideoStreams(localTracks);
this._room = room; // FIXME do not use this
diff --git a/css/_videolayout_default.scss b/css/_videolayout_default.scss
index 3864ebba4..0f6b163ec 100644
--- a/css/_videolayout_default.scss
+++ b/css/_videolayout_default.scss
@@ -496,18 +496,22 @@
display:none !important;
}
+#dominantSpeakerAvatarContainer,
#dominantSpeakerAvatar,
.dynamic-shadow {
width: 200px;
height: 200px;
}
-#dominantSpeakerAvatar {
+#dominantSpeakerAvatarContainer {
top: 50px;
margin: auto;
position: relative;
border-radius: 100px;
+ overflow: hidden;
visibility: inherit;
+}
+#dominantSpeakerAvatar {
background-color: #000000;
}
diff --git a/modules/UI/videolayout/LargeVideoManager.js b/modules/UI/videolayout/LargeVideoManager.js
index 8fa3e8383..769d0fa93 100644
--- a/modules/UI/videolayout/LargeVideoManager.js
+++ b/modules/UI/videolayout/LargeVideoManager.js
@@ -6,6 +6,10 @@ import { I18nextProvider } from 'react-i18next';
import { Provider } from 'react-redux';
import { i18next } from '../../../react/features/base/i18n';
+import {
+ Avatar,
+ getAvatarURLByParticipantId
+} from '../../../react/features/base/participants';
import { PresenceLabel } from '../../../react/features/presence-status';
/* eslint-enable no-unused-vars */
@@ -14,9 +18,6 @@ const logger = require('jitsi-meet-logger').getLogger(__filename);
import {
JitsiParticipantConnectionStatus
} from '../../../react/features/base/lib-jitsi-meet';
-import {
- getAvatarURLByParticipantId
-} from '../../../react/features/base/participants';
import {
updateKnownLargeVideoResolution
} from '../../../react/features/large-video';
@@ -95,6 +96,9 @@ export default class LargeVideoManager {
= this._onVideoResolutionUpdate.bind(this);
this.videoContainer.addResizeListener(this._onVideoResolutionUpdate);
+
+ this._dominantSpeakerAvatarContainer
+ = document.getElementById('dominantSpeakerAvatarContainer');
}
/**
@@ -109,6 +113,8 @@ export default class LargeVideoManager {
this.removePresenceLabel();
+ ReactDOM.unmountComponentAtNode(this._dominantSpeakerAvatarContainer);
+
this.$container.css({ display: 'none' });
}
@@ -394,7 +400,17 @@ export default class LargeVideoManager {
* Updates the src of the dominant speaker avatar
*/
updateAvatar(avatarUrl) {
- $('#dominantSpeakerAvatar').attr('src', avatarUrl);
+ if (avatarUrl) {
+ ReactDOM.render(
+