Sfoglia il codice sorgente

implementation of "start muted"

master
isymchych 9 anni fa
parent
commit
0262917aa6

+ 1
- 0
.gitattributes Vedi File

@@ -1 +1,2 @@
1 1
 *.bundle.js -text -diff
2
+lib-jitsi-meet.js -text -diff

+ 1
- 1
app.js Vedi File

@@ -1,4 +1,4 @@
1
-/* global $, JitsiMeetJS, config, interfaceConfig */
1
+/* global $, JitsiMeetJS, config */
2 2
 /* application specific logic */
3 3
 
4 4
 import "babel-polyfill";

+ 19
- 4
conference.js Vedi File

@@ -15,8 +15,7 @@ const ConnectionErrors = JitsiMeetJS.errors.connection;
15 15
 const ConferenceEvents = JitsiMeetJS.events.conference;
16 16
 const ConferenceErrors = JitsiMeetJS.errors.conference;
17 17
 
18
-let room, connection, localTracks, localAudio, localVideo;
19
-let roomLocker = createRoomLocker(room);
18
+let room, connection, localTracks, localAudio, localVideo, roomLocker;
20 19
 
21 20
 const Commands = {
22 21
     CONNECTION_QUALITY: "stats",
@@ -223,7 +222,13 @@ export default {
223 222
         return room.isSIPCallingSupported();
224 223
     },
225 224
     get membersCount () {
226
-        return room.getParticipants().length; // FIXME maybe +1?
225
+        return room.getParticipants().length + 1;
226
+    },
227
+    get startAudioMuted () {
228
+        return room && room.isStartAudioMuted();
229
+    },
230
+    get startVideoMuted () {
231
+        return room && room.isStartVideoMuted();
227 232
     },
228 233
     // used by torture currently
229 234
     isJoined () {
@@ -241,6 +246,7 @@ export default {
241 246
     _createRoom () {
242 247
         room = connection.initJitsiConference(APP.conference.roomName,
243 248
             this._getConferenceOptions());
249
+        roomLocker = createRoomLocker(room);
244 250
         this._room = room; // FIXME do not use this
245 251
         this.localId = room.myUserId();
246 252
 
@@ -508,7 +514,16 @@ export default {
508 514
 
509 515
         APP.UI.addListener(UIEvents.START_MUTED_CHANGED,
510 516
             (startAudioMuted, startVideoMuted) => {
511
-                // FIXME start muted
517
+                room.setStartMuted(startAudioMuted, startVideoMuted);
518
+            }
519
+        );
520
+        room.on(
521
+            ConferenceEvents.START_MUTED,
522
+            function (startAudioMuted, startVideoMuted, initiallyMuted) {
523
+                APP.UI.onStartMutedChanged();
524
+                if (initiallyMuted) {
525
+                    APP.UI.notifyInitiallyMuted();
526
+                }
512 527
             }
513 528
         );
514 529
 

+ 1206
- 755
libs/lib-jitsi-meet.js
File diff soppresso perché troppo grande
Vedi File


+ 4
- 0
modules/UI/UI.js Vedi File

@@ -781,4 +781,8 @@ UI.stopPrezi = function (userId) {
781 781
   }
782 782
 };
783 783
 
784
+UI.onStartMutedChanged = function () {
785
+    SettingsMenu.onStartMutedChanged();
786
+};
787
+
784 788
 module.exports = UI;

+ 48
- 50
modules/UI/side_pannels/settings/SettingsMenu.js Vedi File

@@ -2,6 +2,7 @@
2 2
 import UIUtil from "../../util/UIUtil";
3 3
 import UIEvents from "../../../../service/UI/UIEvents";
4 4
 import languages from "../../../../service/translation/languages";
5
+import Settings from '../../../settings/Settings';
5 6
 
6 7
 function generateLanguagesSelectBox() {
7 8
     var currentLang = APP.translation.getCurrentLanguage();
@@ -21,32 +22,53 @@ function generateLanguagesSelectBox() {
21 22
 }
22 23
 
23 24
 
24
-const SettingsMenu = {
25
+export default {
26
+    init (emitter) {
27
+        function update() {
28
+            let displayName = UIUtil.escapeHtml($('#setDisplayName').val());
25 29
 
26
-    init: function (emitter) {
27
-        this.emitter = emitter;
30
+            if (displayName && Settings.getDisplayName() !== displayName) {
31
+                emitter.emit(UIEvents.NICKNAME_CHANGED, displayName);
32
+            }
28 33
 
29
-        var startMutedSelector = $("#startMutedOptions");
30
-        startMutedSelector.before(generateLanguagesSelectBox());
31
-        APP.translation.translateElement($("#languages_selectbox"));
32
-        $('#settingsmenu>input').keyup(function(event){
33
-            if(event.keyCode === 13) {//enter
34
-                SettingsMenu.update();
34
+            let language = $("#languages_selectbox").val();
35
+            if (language !== Settings.getLanguage()) {
36
+                emitter.emit(UIEvents.LANG_CHANGED, language);
37
+            }
38
+
39
+            let email = UIUtil.escapeHtml($('#setEmail').val());
40
+            if (email !== Settings.getEmail()) {
41
+                emitter.emit(UIEvents.EMAIL_CHANGED, email);
35 42
             }
36
-        });
37 43
 
38
-        if (APP.conference.isModerator) {
39
-            startMutedSelector.css("display", "block");
40
-        } else {
41
-            startMutedSelector.css("display", "none");
44
+            let startAudioMuted = $("#startAudioMuted").is(":checked");
45
+            let startVideoMuted = $("#startVideoMuted").is(":checked");
46
+            if (startAudioMuted !== APP.conference.startAudioMuted
47
+                || startVideoMuted !== APP.conference.startVideoMuted) {
48
+                emitter.emit(
49
+                    UIEvents.START_MUTED_CHANGED,
50
+                    startAudioMuted,
51
+                    startVideoMuted
52
+                );
53
+            }
42 54
         }
43 55
 
44
-        $("#updateSettings").click(function () {
45
-            SettingsMenu.update();
56
+        let startMutedBlock = $("#startMutedOptions");
57
+        startMutedBlock.before(generateLanguagesSelectBox());
58
+        APP.translation.translateElement($("#languages_selectbox"));
59
+
60
+        this.onRoleChanged();
61
+        this.onStartMutedChanged();
62
+
63
+        $("#updateSettings").click(update);
64
+        $('#settingsmenu>input').keyup(function(event){
65
+            if (event.keyCode === 13) {//enter
66
+                update();
67
+            }
46 68
         });
47 69
     },
48 70
 
49
-    onRoleChanged: function () {
71
+    onRoleChanged () {
50 72
         if(APP.conference.isModerator) {
51 73
             $("#startMutedOptions").css("display", "block");
52 74
         }
@@ -55,46 +77,22 @@ const SettingsMenu = {
55 77
         }
56 78
     },
57 79
 
58
-    setStartMuted: function (audio, video) {
59
-        $("#startAudioMuted").attr("checked", audio);
60
-        $("#startVideoMuted").attr("checked", video);
61
-    },
62
-
63
-    update: function() {
64
-        // FIXME check if this values really changed:
65
-        // compare them with Settings etc.
66
-        var newDisplayName =
67
-                UIUtil.escapeHtml($('#setDisplayName').get(0).value);
68
-
69
-        if (newDisplayName) {
70
-            this.emitter.emit(UIEvents.NICKNAME_CHANGED, newDisplayName);
71
-        }
72
-
73
-        var language = $("#languages_selectbox").val();
74
-        this.emitter.emit(UIEvents.LANG_CHANGED, language);
75
-
76
-        var newEmail = UIUtil.escapeHtml($('#setEmail').get(0).value);
77
-        this.emitter.emit(UIEvents.EMAIL_CHANGED, newEmail);
78
-
79
-        var startAudioMuted = ($("#startAudioMuted").is(":checked"));
80
-        var startVideoMuted = ($("#startVideoMuted").is(":checked"));
81
-        this.emitter.emit(
82
-            UIEvents.START_MUTED_CHANGED, startAudioMuted, startVideoMuted
83
-        );
80
+    onStartMutedChanged () {
81
+        $("#startAudioMuted").attr("checked", APP.conference.startAudioMuted);
82
+        $("#startVideoMuted").attr("checked", APP.conference.startVideoMuted);
84 83
     },
85 84
 
86
-    isVisible: function() {
85
+    isVisible () {
87 86
         return $('#settingsmenu').is(':visible');
88 87
     },
89 88
 
90
-    onDisplayNameChange: function(id, newDisplayName) {
89
+    onDisplayNameChange (id, newDisplayName) {
91 90
         if(id === 'localVideoContainer' || APP.conference.isLocalId(id)) {
92
-            $('#setDisplayName').get(0).value = newDisplayName;
91
+            $('#setDisplayName').val(newDisplayName);
93 92
         }
94 93
     },
95
-    changeAvatar: function (thumbUrl) {
96
-        $('#avatar').get(0).src = thumbUrl;
94
+
95
+    changeAvatar (thumbUrl) {
96
+        $('#avatar').attr('src', thumbUrl);
97 97
     }
98 98
 };
99
-
100
-export default SettingsMenu;

+ 3
- 1
modules/UI/videolayout/VideoLayout.js Vedi File

@@ -157,7 +157,9 @@ var VideoLayout = {
157 157
         let {thumbWidth, thumbHeight} = this.calculateThumbnailSize();
158 158
         AudioLevels.updateAudioLevelCanvas(null, thumbWidth, thumbHeight);
159 159
 
160
-        localVideoThumbnail.changeVideo(stream);
160
+        if (!stream.isMuted()) {
161
+            localVideoThumbnail.changeVideo(stream);
162
+        }
161 163
 
162 164
         /* force update if we're currently being displayed */
163 165
         if (this.isCurrentlyOnLarge(localId)) {

+ 1
- 1
modules/desktopsharing/desktopsharing.js Vedi File

@@ -97,7 +97,7 @@ module.exports = {
97 97
         } else {
98 98
             type = "video";
99 99
         }
100
-        APP.createLocalTracks(type).then(function (tracks) {
100
+        APP.conference.createLocalTracks(type).then(function (tracks) {
101 101
             if (!tracks.length) {
102 102
                 if (type === 'desktop') {
103 103
                     getDesktopStreamFailed();

+ 0
- 2
service/xmpp/XMPPEvents.js Vedi File

@@ -86,8 +86,6 @@ var XMPPEvents = {
86 86
     JINGLE_FATAL_ERROR: 'xmpp.jingle_fatal_error',
87 87
     PROMPT_FOR_LOGIN: 'xmpp.prompt_for_login',
88 88
     FOCUS_DISCONNECTED: 'xmpp.focus_disconnected',
89
-    ROOM_JOIN_ERROR: 'xmpp.room_join_error',
90
-    ROOM_CONNECT_ERROR: 'xmpp.room_connect_error',
91 89
     // xmpp is connected and obtained user media
92 90
     READY_TO_JOIN: 'xmpp.ready_to_join'
93 91
 };

Loading…
Annulla
Salva