From 0ed39dad630cbe102fa717c69311aa61e69a87a5 Mon Sep 17 00:00:00 2001 From: hristoterezov Date: Thu, 23 Mar 2017 12:45:51 -0500 Subject: [PATCH] fix(iframe_api): Display name command race condition If executeCommand('displayName') is executed before Jitsi Meet is fully initialized some listeners were not added and the display name was not changed. --- conference.js | 37 +++++++++++++++++++------------------ modules/API/API.js | 3 ++- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/conference.js b/conference.js index 8c7b4ac11..8dc5c2afc 100644 --- a/conference.js +++ b/conference.js @@ -348,23 +348,6 @@ function createLocalTracks (options, checkForPermissionPrompt) { }); } -/** - * Changes the display name for the local user - * @param nickname {string} the new display name - */ -function changeLocalDisplayName(nickname = '') { - const formattedNickname - = nickname.trim().substr(0, MAX_DISPLAY_NAME_LENGTH); - - if (formattedNickname === APP.settings.getDisplayName()) { - return; - } - - APP.settings.setDisplayName(formattedNickname); - room.setDisplayName(formattedNickname); - APP.UI.changeDisplayName(APP.conference.getMyUserId(), formattedNickname); -} - class ConferenceConnector { constructor(resolve, reject, invite) { this._resolve = resolve; @@ -1505,7 +1488,8 @@ export default { APP.UI.setUserAvatarID(from, data.value); }); - APP.UI.addListener(UIEvents.NICKNAME_CHANGED, changeLocalDisplayName); + APP.UI.addListener(UIEvents.NICKNAME_CHANGED, + this.changeLocalDisplayName.bind(this)); APP.UI.addListener(UIEvents.START_MUTED_CHANGED, (startAudioMuted, startVideoMuted) => { @@ -1978,5 +1962,22 @@ export default { */ isInLastN (participantId) { return room.isInLastN(participantId); + }, + /** + * Changes the display name for the local user + * @param nickname {string} the new display name + */ + changeLocalDisplayName(nickname = '') { + const formattedNickname + = nickname.trim().substr(0, MAX_DISPLAY_NAME_LENGTH); + + if (formattedNickname === APP.settings.getDisplayName()) { + return; + } + + APP.settings.setDisplayName(formattedNickname); + room.setDisplayName(formattedNickname); + APP.UI.changeDisplayName(this.getMyUserId(), + formattedNickname); } }; diff --git a/modules/API/API.js b/modules/API/API.js index 8417e7db2..3bb979e31 100644 --- a/modules/API/API.js +++ b/modules/API/API.js @@ -45,7 +45,8 @@ let enabled = false; function initCommands() { commands = { - "display-name": APP.UI.inputDisplayNameHandler, + "display-name": + APP.conference.changeLocalDisplayName.bind(APP.conference), "toggle-audio": APP.conference.toggleAudioMuted.bind(APP.conference), "toggle-video": APP.conference.toggleVideoMuted.bind(APP.conference), "toggle-film-strip": APP.UI.toggleFilmStrip,