ソースを参照

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.
master
hristoterezov 8年前
コミット
0ed39dad63
2個のファイルの変更21行の追加19行の削除
  1. 19
    18
      conference.js
  2. 2
    1
      modules/API/API.js

+ 19
- 18
conference.js ファイルの表示

@@ -348,23 +348,6 @@ function createLocalTracks (options, checkForPermissionPrompt) {
348 348
         });
349 349
 }
350 350
 
351
-/**
352
- * Changes the display name for the local user
353
- * @param nickname {string} the new display name
354
- */
355
-function changeLocalDisplayName(nickname = '') {
356
-    const formattedNickname
357
-        = nickname.trim().substr(0, MAX_DISPLAY_NAME_LENGTH);
358
-
359
-    if (formattedNickname === APP.settings.getDisplayName()) {
360
-        return;
361
-    }
362
-
363
-    APP.settings.setDisplayName(formattedNickname);
364
-    room.setDisplayName(formattedNickname);
365
-    APP.UI.changeDisplayName(APP.conference.getMyUserId(), formattedNickname);
366
-}
367
-
368 351
 class ConferenceConnector {
369 352
     constructor(resolve, reject, invite) {
370 353
         this._resolve = resolve;
@@ -1505,7 +1488,8 @@ export default {
1505 1488
                 APP.UI.setUserAvatarID(from, data.value);
1506 1489
             });
1507 1490
 
1508
-        APP.UI.addListener(UIEvents.NICKNAME_CHANGED, changeLocalDisplayName);
1491
+        APP.UI.addListener(UIEvents.NICKNAME_CHANGED,
1492
+            this.changeLocalDisplayName.bind(this));
1509 1493
 
1510 1494
         APP.UI.addListener(UIEvents.START_MUTED_CHANGED,
1511 1495
             (startAudioMuted, startVideoMuted) => {
@@ -1978,5 +1962,22 @@ export default {
1978 1962
      */
1979 1963
     isInLastN (participantId) {
1980 1964
         return room.isInLastN(participantId);
1965
+    },
1966
+    /**
1967
+     * Changes the display name for the local user
1968
+     * @param nickname {string} the new display name
1969
+     */
1970
+    changeLocalDisplayName(nickname = '') {
1971
+        const formattedNickname
1972
+            = nickname.trim().substr(0, MAX_DISPLAY_NAME_LENGTH);
1973
+
1974
+        if (formattedNickname === APP.settings.getDisplayName()) {
1975
+            return;
1976
+        }
1977
+
1978
+        APP.settings.setDisplayName(formattedNickname);
1979
+        room.setDisplayName(formattedNickname);
1980
+        APP.UI.changeDisplayName(this.getMyUserId(),
1981
+            formattedNickname);
1981 1982
     }
1982 1983
 };

+ 2
- 1
modules/API/API.js ファイルの表示

@@ -45,7 +45,8 @@ let enabled = false;
45 45
 
46 46
 function initCommands() {
47 47
     commands = {
48
-        "display-name": APP.UI.inputDisplayNameHandler,
48
+        "display-name":
49
+            APP.conference.changeLocalDisplayName.bind(APP.conference),
49 50
         "toggle-audio": APP.conference.toggleAudioMuted.bind(APP.conference),
50 51
         "toggle-video": APP.conference.toggleVideoMuted.bind(APP.conference),
51 52
         "toggle-film-strip": APP.UI.toggleFilmStrip,

読み込み中…
キャンセル
保存