1234567891011121314151617181920212223242526272829303132333435 |
- // @flow
- import { getAudioOutputDeviceId } from '../base/devices';
- import JitsiMeetJS from '../base/lib-jitsi-meet';
- import { toState } from '../base/redux';
-
- /**
- * Returns the properties for the device selection dialog from Redux state.
- *
- * @param {(Function|Object)} stateful -The (whole) redux state, or redux's
- * {@code getState} function to be used to retrieve the state.
- * @returns {Object} - The properties for the device selection dialog.
- */
- export function getDeviceSelectionDialogProps(stateful: Object | Function) {
- const state = toState(stateful);
- const settings = state['features/base/settings'];
-
- return {
- availableDevices: state['features/base/devices'],
- disableAudioInputChange:
- !JitsiMeetJS.isMultipleAudioInputSupported(),
- disableDeviceChange:
- !JitsiMeetJS.mediaDevices.isDeviceChangeAvailable(),
- hasAudioPermission: JitsiMeetJS.mediaDevices
- .isDevicePermissionGranted.bind(null, 'audio'),
- hasVideoPermission: JitsiMeetJS.mediaDevices
- .isDevicePermissionGranted.bind(null, 'video'),
- hideAudioInputPreview:
- !JitsiMeetJS.isCollectingLocalStats(),
- hideAudioOutputSelect: !JitsiMeetJS.mediaDevices
- .isDeviceChangeAvailable('output'),
- selectedAudioInputId: settings.micDeviceId,
- selectedAudioOutputId: getAudioOutputDeviceId(),
- selectedVideoInputId: settings.cameraDeviceId
- };
- }
|