157 lines
4.2 KiB
JavaScript
157 lines
4.2 KiB
JavaScript
// @flow
|
|
|
|
import Logger from 'jitsi-meet-logger';
|
|
|
|
const logger = Logger.getLogger(__filename);
|
|
|
|
/**
|
|
* Returns Promise that resolves with result an list of available devices.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @returns {Promise}
|
|
*/
|
|
export function getAvailableDevices(transport: Object) {
|
|
return transport.sendRequest({
|
|
type: 'devices',
|
|
name: 'getAvailableDevices'
|
|
}).catch(e => {
|
|
logger.error(e);
|
|
|
|
return {};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Returns Promise that resolves with current selected devices.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @returns {Promise}
|
|
*/
|
|
export function getCurrentDevices(transport: Object) {
|
|
return transport.sendRequest({
|
|
type: 'devices',
|
|
name: 'getCurrentDevices'
|
|
}).catch(e => {
|
|
logger.error(e);
|
|
|
|
return {};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Returns Promise that resolves with true if the device change is available
|
|
* and with false if not.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @param {string} [deviceType] - Values - 'output', 'input' or undefined.
|
|
* Default - 'input'.
|
|
* @returns {Promise}
|
|
*/
|
|
export function isDeviceChangeAvailable(transport: Object, deviceType: string) {
|
|
return transport.sendRequest({
|
|
deviceType,
|
|
type: 'devices',
|
|
name: 'isDeviceChangeAvailable'
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Returns Promise that resolves with true if the device list is available
|
|
* and with false if not.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @returns {Promise}
|
|
*/
|
|
export function isDeviceListAvailable(transport: Object) {
|
|
return transport.sendRequest({
|
|
type: 'devices',
|
|
name: 'isDeviceListAvailable'
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Returns Promise that resolves with true if multiple audio input is supported
|
|
* and with false if not.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @returns {Promise}
|
|
*/
|
|
export function isMultipleAudioInputSupported(transport: Object) {
|
|
return transport.sendRequest({
|
|
type: 'devices',
|
|
name: 'isMultipleAudioInputSupported'
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Sets the audio input device to the one with the label or id that is passed.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @param {string} label - The label of the new device.
|
|
* @param {string} id - The id of the new device.
|
|
* @returns {Promise}
|
|
*/
|
|
export function setAudioInputDevice(transport: Object, label: string, id: string) {
|
|
return _setDevice(transport, {
|
|
id,
|
|
kind: 'audioinput',
|
|
label
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Sets the audio output device to the one with the label or id that is passed.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @param {string} label - The label of the new device.
|
|
* @param {string} id - The id of the new device.
|
|
* @returns {Promise}
|
|
*/
|
|
export function setAudioOutputDevice(transport: Object, label: string, id: string) {
|
|
return _setDevice(transport, {
|
|
id,
|
|
kind: 'audiooutput',
|
|
label
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Sets the currently used device to the one that is passed.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @param {Object} device - The new device to be used.
|
|
* @returns {Promise}
|
|
*/
|
|
function _setDevice(transport: Object, device) {
|
|
return transport.sendRequest({
|
|
type: 'devices',
|
|
name: 'setDevice',
|
|
device
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Sets the video input device to the one with the label or id that is passed.
|
|
*
|
|
* @param {Transport} transport - The @code{Transport} instance responsible for
|
|
* the external communication.
|
|
* @param {string} label - The label of the new device.
|
|
* @param {string} id - The id of the new device.
|
|
* @returns {Promise}
|
|
*/
|
|
export function setVideoInputDevice(transport: Object, label: string, id: string) {
|
|
return _setDevice(transport, {
|
|
id,
|
|
kind: 'videoinput',
|
|
label
|
|
});
|
|
}
|