fix: open device selection if it is the only available setting

Move logic to open device selection outside of SettingsMenu so
it can be called independently by either SettingsMenu or by
the settings button itself if no other settings but devices will
be displayed.
This commit is contained in:
Leonard Kim
2017-04-13 11:43:06 -07:00
parent ae06a6ce41
commit 7db1c9b8eb
5 changed files with 60 additions and 55 deletions
@@ -0,0 +1,40 @@
/* globals APP */
import { openDialog } from '../base/dialog';
import JitsiMeetJS from '../base/lib-jitsi-meet';
import { DeviceSelectionDialog } from './components';
/**
* Open DeviceSelectionDialog with a configuration based on the environment's
* supported abilities.
*
* @returns {Function}
*/
export function openDeviceSelectionDialog() {
return (dispatch, getState) => {
JitsiMeetJS.mediaDevices.isDeviceListAvailable()
.then(isDeviceListAvailable => {
const state = getState();
const conference = state['features/base/conference'].conference;
dispatch(openDialog(DeviceSelectionDialog, {
currentAudioOutputId: APP.settings.getAudioOutputDeviceId(),
currentAudioTrack: conference.getLocalAudioTrack(),
currentVideoTrack: conference.getLocalVideoTrack(),
disableAudioInputChange:
!JitsiMeetJS.isMultipleAudioInputSupported(),
disableDeviceChange: !isDeviceListAvailable
|| !JitsiMeetJS.mediaDevices.isDeviceChangeAvailable(),
hasAudioPermission: JitsiMeetJS.mediaDevices
.isDevicePermissionGranted('audio'),
hasVideoPermission: JitsiMeetJS.mediaDevices
.isDevicePermissionGranted('video'),
hideAudioInputPreview:
!JitsiMeetJS.isCollectingLocalStats(),
hideAudioOutputSelect: !JitsiMeetJS.mediaDevices
.isDeviceChangeAvailable('output')
}));
});
};
}
+1
View File
@@ -1 +1,2 @@
export * from './actions';
export * from './components';