agora-appbuilder-core 4.0.0-beta.12 → 4.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -45,11 +45,15 @@ type deviceKind = deviceInfo['kind'];
|
|
|
45
45
|
|
|
46
46
|
const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
47
47
|
const rtc = useRtc();
|
|
48
|
-
const [
|
|
49
|
-
const [
|
|
50
|
-
const [
|
|
48
|
+
const [uiSelectedCam, setUiSelectedCam] = useState('');
|
|
49
|
+
const [uiSelectedMic, setUiSelectedMic] = useState('');
|
|
50
|
+
const [uiSelectedSpeaker, setUiSelectedSpeaker] = useState('');
|
|
51
51
|
const [deviceList, setDeviceList] = useState<deviceInfo[]>([]);
|
|
52
52
|
|
|
53
|
+
const micSelectInProgress = useRef(false);
|
|
54
|
+
const camSelectInProgress = useRef(false);
|
|
55
|
+
const speakerSelectInProgress = useRef(false);
|
|
56
|
+
|
|
53
57
|
const {primaryColor} = useContext(ColorContext);
|
|
54
58
|
const {store, setStore} = useContext(StorageContext);
|
|
55
59
|
const {rememberedDevicesList, activeDeviceId} = store;
|
|
@@ -241,7 +245,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
241
245
|
|
|
242
246
|
if (activeDeviceId && deviceList.length > 0) {
|
|
243
247
|
// If stream exists and selected devices are empty, check for devices again
|
|
244
|
-
if (!
|
|
248
|
+
if (!uiSelectedCam || uiSelectedCam.trim().length == 0) {
|
|
245
249
|
log(logTag, 'cam: Device list populated but No selected cam');
|
|
246
250
|
const currentVideoDevice = getAgoraTrackDeviceId('video');
|
|
247
251
|
const {videoinput: storedVideoInput} = activeDeviceId;
|
|
@@ -259,7 +263,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
259
263
|
}
|
|
260
264
|
}
|
|
261
265
|
|
|
262
|
-
if (!
|
|
266
|
+
if (!uiSelectedMic || uiSelectedMic.trim().length == 0) {
|
|
263
267
|
log(logTag, 'mic: Device list populated but No selected mic');
|
|
264
268
|
const currentAudioDevice = getAgoraTrackDeviceId('audio');
|
|
265
269
|
const {audioinput: storedAudioInput} = activeDeviceId;
|
|
@@ -277,7 +281,7 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
277
281
|
}
|
|
278
282
|
}
|
|
279
283
|
|
|
280
|
-
if (!
|
|
284
|
+
if (!uiSelectedSpeaker || uiSelectedSpeaker.trim().length == 0) {
|
|
281
285
|
log(logTag, 'speaker: Device list populated but No selected speaker');
|
|
282
286
|
const {audiooutput: storedAudioOutput} = activeDeviceId;
|
|
283
287
|
const defaultSpeaker = deviceList.find(
|
|
@@ -323,17 +327,17 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
323
327
|
const {logTag, currentDevice, setCurrentDevice} = {
|
|
324
328
|
audioinput: {
|
|
325
329
|
logTag: 'mic: on-microphone-changed',
|
|
326
|
-
currentDevice:
|
|
330
|
+
currentDevice: uiSelectedMic,
|
|
327
331
|
setCurrentDevice: setSelectedMic,
|
|
328
332
|
},
|
|
329
333
|
audiooutput: {
|
|
330
334
|
logTag: 'speaker: on-speaker-changed',
|
|
331
|
-
currentDevice:
|
|
335
|
+
currentDevice: uiSelectedSpeaker,
|
|
332
336
|
setCurrentDevice: setSelectedSpeaker,
|
|
333
337
|
},
|
|
334
338
|
videoinput: {
|
|
335
339
|
logTag: 'cam: on-camera-changed',
|
|
336
|
-
currentDevice:
|
|
340
|
+
currentDevice: uiSelectedCam,
|
|
337
341
|
setCurrentDevice: setSelectedCam,
|
|
338
342
|
},
|
|
339
343
|
}[changedDevice.kind];
|
|
@@ -401,33 +405,42 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
401
405
|
return () => {
|
|
402
406
|
AgoraRTC.onMicrophoneChanged = null;
|
|
403
407
|
};
|
|
404
|
-
}, [
|
|
408
|
+
}, [uiSelectedMic, deviceList]);
|
|
405
409
|
|
|
406
410
|
useEffect(() => {
|
|
407
411
|
AgoraRTC.onPlaybackDeviceChanged = commonOnChangedEvent;
|
|
408
412
|
return () => {
|
|
409
413
|
AgoraRTC.onPlaybackDeviceChanged = null;
|
|
410
414
|
};
|
|
411
|
-
}, [
|
|
415
|
+
}, [uiSelectedSpeaker, deviceList]);
|
|
412
416
|
|
|
413
417
|
useEffect(() => {
|
|
414
418
|
AgoraRTC.onCameraChanged = commonOnChangedEvent;
|
|
415
419
|
return () => {
|
|
416
420
|
AgoraRTC.onCameraChanged = null;
|
|
417
421
|
};
|
|
418
|
-
}, [
|
|
422
|
+
}, [uiSelectedCam, deviceList]);
|
|
419
423
|
|
|
420
424
|
const setSelectedMic = (deviceId: deviceId) => {
|
|
421
425
|
log('mic: setting to', deviceId);
|
|
422
426
|
return new Promise((res, rej) => {
|
|
427
|
+
if (micSelectInProgress.current) {
|
|
428
|
+
const e = new Error('Change already in progress');
|
|
429
|
+
console.error('DeviceConfigure: Error setting mic', e);
|
|
430
|
+
rej(e);
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
micSelectInProgress.current = true;
|
|
423
434
|
RtcEngine.changeMic(
|
|
424
435
|
deviceId,
|
|
425
436
|
() => {
|
|
426
437
|
syncSelectedDeviceUi('audioinput');
|
|
427
438
|
updateActiveDeviceId('audioinput', deviceId);
|
|
439
|
+
micSelectInProgress.current = false;
|
|
428
440
|
res(null);
|
|
429
441
|
},
|
|
430
442
|
(e: any) => {
|
|
443
|
+
micSelectInProgress.current = false;
|
|
431
444
|
console.error('DeviceConfigure: Error setting mic', e);
|
|
432
445
|
rej(e);
|
|
433
446
|
},
|
|
@@ -438,14 +451,23 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
438
451
|
const setSelectedCam = (deviceId: deviceId) => {
|
|
439
452
|
log('cam: setting to', deviceId);
|
|
440
453
|
return new Promise((res, rej) => {
|
|
454
|
+
if (camSelectInProgress.current) {
|
|
455
|
+
const e = new Error('Change already in progress');
|
|
456
|
+
console.error('DeviceConfigure: Error setting webcam', e);
|
|
457
|
+
rej(e);
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
camSelectInProgress.current = true;
|
|
441
461
|
RtcEngine.changeCamera(
|
|
442
462
|
deviceId,
|
|
443
463
|
() => {
|
|
444
464
|
syncSelectedDeviceUi('videoinput');
|
|
445
465
|
updateActiveDeviceId('videoinput', deviceId);
|
|
466
|
+
camSelectInProgress.current = false;
|
|
446
467
|
res(null);
|
|
447
468
|
},
|
|
448
469
|
(e: any) => {
|
|
470
|
+
camSelectInProgress.current = false;
|
|
449
471
|
console.error('Device Configure: Error setting webcam', e);
|
|
450
472
|
rej(e);
|
|
451
473
|
},
|
|
@@ -456,16 +478,25 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
456
478
|
const setSelectedSpeaker = (deviceId: deviceId) => {
|
|
457
479
|
log('speaker: setting to', deviceId);
|
|
458
480
|
return new Promise((res, rej) => {
|
|
481
|
+
if (speakerSelectInProgress.current) {
|
|
482
|
+
const e = new Error('Change already in progress');
|
|
483
|
+
console.error('DeviceConfigure: Error setting speaker', e);
|
|
484
|
+
rej(e);
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
speakerSelectInProgress.current = true;
|
|
459
488
|
RtcEngine.changeSpeaker(
|
|
460
489
|
deviceId,
|
|
461
490
|
() => {
|
|
462
491
|
setUiSelectedSpeaker(deviceId);
|
|
463
492
|
updateActiveDeviceId('audiooutput', deviceId);
|
|
493
|
+
speakerSelectInProgress.current = false;
|
|
464
494
|
res(null);
|
|
465
495
|
},
|
|
466
496
|
(e: any) => {
|
|
497
|
+
speakerSelectInProgress.current = false;
|
|
467
498
|
console.error('Device Configure: Error setting speaker', e);
|
|
468
|
-
rej(
|
|
499
|
+
rej(uiSelectedSpeaker);
|
|
469
500
|
},
|
|
470
501
|
);
|
|
471
502
|
});
|
|
@@ -526,11 +557,11 @@ const DeviceConfigure: React.FC<Props> = (props: any) => {
|
|
|
526
557
|
return (
|
|
527
558
|
<DeviceContext.Provider
|
|
528
559
|
value={{
|
|
529
|
-
selectedCam,
|
|
560
|
+
selectedCam: uiSelectedCam,
|
|
530
561
|
setSelectedCam,
|
|
531
|
-
selectedMic,
|
|
562
|
+
selectedMic: uiSelectedMic,
|
|
532
563
|
setSelectedMic,
|
|
533
|
-
selectedSpeaker,
|
|
564
|
+
selectedSpeaker: uiSelectedSpeaker,
|
|
534
565
|
setSelectedSpeaker,
|
|
535
566
|
deviceList,
|
|
536
567
|
setDeviceList,
|