您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

actions.js 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { createDeviceChangedEvent, sendAnalytics } from '../analytics';
  2. import {
  3. getDeviceLabelById,
  4. setAudioInputDevice,
  5. setAudioOutputDeviceId,
  6. setVideoInputDevice
  7. } from '../base/devices';
  8. import { updateSettings } from '../base/settings';
  9. import { getDeviceSelectionDialogProps } from './functions';
  10. import logger from './logger';
  11. /**
  12. * Submits the settings related to device selection.
  13. *
  14. * @param {Object} newState - The new settings.
  15. * @returns {Function}
  16. */
  17. export function submitDeviceSelectionTab(newState) {
  18. return (dispatch, getState) => {
  19. const currentState = getDeviceSelectionDialogProps(getState());
  20. if (newState.selectedVideoInputId && (newState.selectedVideoInputId !== currentState.selectedVideoInputId)) {
  21. dispatch(updateSettings({
  22. userSelectedCameraDeviceId: newState.selectedVideoInputId,
  23. userSelectedCameraDeviceLabel:
  24. getDeviceLabelById(getState(), newState.selectedVideoInputId, 'videoInput')
  25. }));
  26. dispatch(setVideoInputDevice(newState.selectedVideoInputId));
  27. }
  28. if (newState.selectedAudioInputId && newState.selectedAudioInputId !== currentState.selectedAudioInputId) {
  29. dispatch(updateSettings({
  30. userSelectedMicDeviceId: newState.selectedAudioInputId,
  31. userSelectedMicDeviceLabel:
  32. getDeviceLabelById(getState(), newState.selectedAudioInputId, 'audioInput')
  33. }));
  34. dispatch(setAudioInputDevice(newState.selectedAudioInputId));
  35. }
  36. if (newState.selectedAudioOutputId
  37. && newState.selectedAudioOutputId
  38. !== currentState.selectedAudioOutputId) {
  39. sendAnalytics(createDeviceChangedEvent('audio', 'output'));
  40. setAudioOutputDeviceId(
  41. newState.selectedAudioOutputId,
  42. dispatch,
  43. true,
  44. getDeviceLabelById(getState(), newState.selectedAudioOutputId, 'audioOutput'))
  45. .then(() => logger.log('changed audio output device'))
  46. .catch(err => {
  47. logger.warn(
  48. 'Failed to change audio output device.',
  49. 'Default or previously set audio output device will',
  50. ' be used instead.',
  51. err);
  52. });
  53. }
  54. };
  55. }