Procházet zdrojové kódy

feat(prejoin): Show warning if audio device does not receive data

j8
Vlad Piersec před 4 roky
rodič
revize
4bd57692b7

+ 1
- 0
lang/main.json Zobrazit soubor

@@ -504,6 +504,7 @@
504 504
     "poweredby": "powered by",
505 505
     "prejoin": {
506 506
         "audioAndVideoError": "Audio and video error:",
507
+        "audioDeviceProblem": "There is a problem with your audio device",
507 508
         "audioOnlyError": "Audio error:",
508 509
         "audioTrackError": "Could not create audio track.",
509 510
         "calling": "Calling",

+ 35
- 2
react/features/prejoin/middleware.js Zobrazit soubor

@@ -4,10 +4,19 @@ import { updateConfig } from '../base/config';
4 4
 import { SET_AUDIO_MUTED, SET_VIDEO_MUTED } from '../base/media';
5 5
 import { MiddlewareRegistry } from '../base/redux';
6 6
 import { updateSettings } from '../base/settings';
7
-import { getLocalVideoTrack, replaceLocalTrack } from '../base/tracks';
7
+import {
8
+    getLocalVideoTrack,
9
+    replaceLocalTrack,
10
+    TRACK_ADDED,
11
+    TRACK_NO_DATA_FROM_SOURCE
12
+} from '../base/tracks';
8 13
 
9 14
 import { PREJOIN_START_CONFERENCE } from './actionTypes';
10
-import { setPrejoinPageVisibility } from './actions';
15
+import {
16
+    setDeviceStatusOk,
17
+    setDeviceStatusWarning,
18
+    setPrejoinPageVisibility
19
+} from './actions';
11 20
 import { isPrejoinPageVisible } from './functions';
12 21
 
13 22
 declare var APP: Object;
@@ -63,6 +72,30 @@ MiddlewareRegistry.register(store => next => async action => {
63 72
         break;
64 73
     }
65 74
 
75
+    case TRACK_ADDED:
76
+    case TRACK_NO_DATA_FROM_SOURCE: {
77
+        const state = store.getState();
78
+
79
+        if (isPrejoinPageVisible(state)) {
80
+            const { track: { jitsiTrack: track } } = action;
81
+            const { deviceStatusType, deviceStatusText } = state['features/prejoin'];
82
+
83
+            if (!track.isAudioTrack()) {
84
+                break;
85
+            }
86
+
87
+            if (track.isReceivingData()) {
88
+                if (deviceStatusType === 'warning'
89
+                    && deviceStatusText === 'prejoin.audioDeviceProblem') {
90
+                    store.dispatch(setDeviceStatusOk('prejoin.lookGood'));
91
+                }
92
+            } else if (deviceStatusType === 'ok') {
93
+                store.dispatch(setDeviceStatusWarning('prejoin.audioDeviceProblem'));
94
+            }
95
+        }
96
+        break;
97
+    }
98
+
66 99
     }
67 100
 
68 101
     return next(action);

+ 4
- 2
react/features/prejoin/reducer.js Zobrazit soubor

@@ -68,10 +68,12 @@ ReducerRegistry.register(
68 68
         }
69 69
 
70 70
         case SET_DEVICE_STATUS: {
71
+            const { deviceStatusType, deviceStatusText } = action.value;
72
+
71 73
             return {
72 74
                 ...state,
73
-                deviceStatusText: action.text,
74
-                deviceStatusType: action.type
75
+                deviceStatusText,
76
+                deviceStatusType
75 77
             };
76 78
         }
77 79
 

Načítá se…
Zrušit
Uložit