Pārlūkot izejas kodu

Remove state from mediaDeviceHelper (#3226)

* ref(device-selection): do not override var that is not reference again

* ref(device-selection): do not override var that is not reference again

* ref(device-selection): always update known devices on device list update

* ref(device-selection): replace call to get devices from legacy to redux

* ref(device-selection): remove unused device list state from mediaDeviceHelper

* ref(device-selection): update store before updating UI
master
virtuacoplenny 7 gadus atpakaļ
vecāks
revīzija
4e4755f91e
Revīzijas autora e-pasta adrese nav piesaistīta nevienam kontam
3 mainītis faili ar 5 papildinājumiem un 64 dzēšanām
  1. 4
    15
      conference.js
  2. 1
    4
      modules/UI/UI.js
  3. 0
    45
      modules/devices/mediaDeviceHelper.js

+ 4
- 15
conference.js Parādīt failu

2341
                     }));
2341
                     }));
2342
                 }
2342
                 }
2343
 
2343
 
2344
-                mediaDeviceHelper.setCurrentMediaDevices(devices);
2345
-                APP.UI.onAvailableDevicesChanged(devices);
2346
                 APP.store.dispatch(updateDeviceList(devices));
2344
                 APP.store.dispatch(updateDeviceList(devices));
2345
+                APP.UI.onAvailableDevicesChanged(devices);
2347
             });
2346
             });
2348
 
2347
 
2349
             this.deviceChangeListener = devices =>
2348
             this.deviceChangeListener = devices =>
2362
      * @returns {Promise}
2361
      * @returns {Promise}
2363
      */
2362
      */
2364
     _onDeviceListChanged(devices) {
2363
     _onDeviceListChanged(devices) {
2365
-        let currentDevices = mediaDeviceHelper.getCurrentMediaDevices();
2366
-
2367
-        // Event handler can be fired before direct
2368
-        // enumerateDevices() call, so handle this situation here.
2369
-        if (!currentDevices.audioinput
2370
-            && !currentDevices.videoinput
2371
-            && !currentDevices.audiooutput) {
2372
-            mediaDeviceHelper.setCurrentMediaDevices(devices);
2373
-            currentDevices = mediaDeviceHelper.getCurrentMediaDevices();
2374
-        }
2364
+        APP.store.dispatch(updateDeviceList(devices));
2375
 
2365
 
2376
         const newDevices
2366
         const newDevices
2377
             = mediaDeviceHelper.getNewMediaDevicesAfterDeviceListChanged(
2367
             = mediaDeviceHelper.getNewMediaDevicesAfterDeviceListChanged(
2420
 
2410
 
2421
         return Promise.all(promises)
2411
         return Promise.all(promises)
2422
             .then(() => {
2412
             .then(() => {
2423
-                mediaDeviceHelper.setCurrentMediaDevices(devices);
2424
                 APP.UI.onAvailableDevicesChanged(devices);
2413
                 APP.UI.onAvailableDevicesChanged(devices);
2425
             });
2414
             });
2426
     },
2415
     },
2430
      */
2419
      */
2431
     updateAudioIconEnabled() {
2420
     updateAudioIconEnabled() {
2432
         const audioMediaDevices
2421
         const audioMediaDevices
2433
-            = mediaDeviceHelper.getCurrentMediaDevices().audioinput;
2422
+            = APP.store.getState()['features/base/devices'].audioInput;
2434
         const audioDeviceCount
2423
         const audioDeviceCount
2435
             = audioMediaDevices ? audioMediaDevices.length : 0;
2424
             = audioMediaDevices ? audioMediaDevices.length : 0;
2436
 
2425
 
2453
      */
2442
      */
2454
     updateVideoIconEnabled() {
2443
     updateVideoIconEnabled() {
2455
         const videoMediaDevices
2444
         const videoMediaDevices
2456
-            = mediaDeviceHelper.getCurrentMediaDevices().videoinput;
2445
+            = APP.store.getState()['features/base/devices'].videoInput;
2457
         const videoDeviceCount
2446
         const videoDeviceCount
2458
             = videoMediaDevices ? videoMediaDevices.length : 0;
2447
             = videoMediaDevices ? videoMediaDevices.length : 0;
2459
 
2448
 

+ 1
- 4
modules/UI/UI.js Parādīt failu

16
 import VideoLayout from './videolayout/VideoLayout';
16
 import VideoLayout from './videolayout/VideoLayout';
17
 import Filmstrip from './videolayout/Filmstrip';
17
 import Filmstrip from './videolayout/Filmstrip';
18
 
18
 
19
-import { updateDeviceList } from '../../react/features/base/devices';
20
 import { JitsiTrackErrors } from '../../react/features/base/lib-jitsi-meet';
19
 import { JitsiTrackErrors } from '../../react/features/base/lib-jitsi-meet';
21
 import {
20
 import {
22
     getLocalParticipant,
21
     getLocalParticipant,
803
 
802
 
804
 /**
803
 /**
805
  * Update list of available physical devices.
804
  * Update list of available physical devices.
806
- * @param {object[]} devices new list of available devices
807
  */
805
  */
808
-UI.onAvailableDevicesChanged = function(devices) {
809
-    APP.store.dispatch(updateDeviceList(devices));
806
+UI.onAvailableDevicesChanged = function() {
810
     APP.conference.updateAudioIconEnabled();
807
     APP.conference.updateAudioIconEnabled();
811
     APP.conference.updateVideoIconEnabled();
808
     APP.conference.updateVideoIconEnabled();
812
 };
809
 };

+ 0
- 45
modules/devices/mediaDeviceHelper.js Parādīt failu

2
 
2
 
3
 import { getAudioOutputDeviceId } from '../../react/features/base/devices';
3
 import { getAudioOutputDeviceId } from '../../react/features/base/devices';
4
 
4
 
5
-let currentAudioInputDevices,
6
-    currentAudioOutputDevices,
7
-    currentVideoInputDevices;
8
-
9
 /**
5
 /**
10
  * Determines if currently selected audio output device should be changed after
6
  * Determines if currently selected audio output device should be changed after
11
  * list of available devices has been changed.
7
  * list of available devices has been changed.
105
 }
101
 }
106
 
102
 
107
 export default {
103
 export default {
108
-    /**
109
-     * Returns list of devices of single kind.
110
-     * @param {MediaDeviceInfo[]} devices
111
-     * @param {'audioinput'|'audiooutput'|'videoinput'} kind
112
-     * @returns {MediaDeviceInfo[]}
113
-     */
114
-    getDevicesFromListByKind(devices, kind) {
115
-        return devices.filter(d => d.kind === kind);
116
-    },
117
-
118
-    /**
119
-     * Stores lists of current 'audioinput', 'videoinput' and 'audiooutput'
120
-     * devices.
121
-     * @param {MediaDeviceInfo[]} devices
122
-     */
123
-    setCurrentMediaDevices(devices) {
124
-        currentAudioInputDevices
125
-            = this.getDevicesFromListByKind(devices, 'audioinput');
126
-        currentVideoInputDevices
127
-            = this.getDevicesFromListByKind(devices, 'videoinput');
128
-        currentAudioOutputDevices
129
-            = this.getDevicesFromListByKind(devices, 'audiooutput');
130
-    },
131
-
132
-    /**
133
-     * Returns lists of current 'audioinput', 'videoinput' and 'audiooutput'
134
-     * devices.
135
-     * @returns {{
136
-     *  audioinput: (MediaDeviceInfo[]|undefined),
137
-     *  videoinput: (MediaDeviceInfo[]|undefined),
138
-     *  audiooutput: (MediaDeviceInfo[]|undefined),
139
-     *  }}
140
-     */
141
-    getCurrentMediaDevices() {
142
-        return {
143
-            audioinput: currentAudioInputDevices,
144
-            videoinput: currentVideoInputDevices,
145
-            audiooutput: currentAudioOutputDevices
146
-        };
147
-    },
148
-
149
     /**
104
     /**
150
      * Determines if currently selected media devices should be changed after
105
      * Determines if currently selected media devices should be changed after
151
      * list of available devices has been changed.
106
      * list of available devices has been changed.

Notiek ielāde…
Atcelt
Saglabāt