UNPKG

mediasfu-reactnative

Version:
47 lines 2.65 kB
/** * Launches the media settings modal and updates the available audio and video input devices. * * @param {Object} options - The options for launching media settings. * @param {Function} options.updateIsMediaSettingsModalVisible - Function to update the visibility state of the media settings modal. * @param {boolean} options.isMediaSettingsModalVisible - Current visibility state of the media settings modal. * @param {MediaDevices} options.mediaDevices - MediaDevices interface to enumerate media devices. * @param {MediaDeviceInfo[]} options.audioInputs - Array to store available audio input devices. * @param {MediaDeviceInfo[]} options.videoInputs - Array to store available video input devices. * @param {Function} options.updateAudioInputs - Function to update the available audio input devices. * @param {Function} options.updateVideoInputs - Function to update the available video input devices. * @returns {Promise<void>} A promise that resolves when the media settings have been updated. * * @example * ```typescript * launchMediaSettings({ * updateIsMediaSettingsModalVisible: (isVisible) => console.log("Modal visible:", isVisible), * isMediaSettingsModalVisible: false, * mediaDevices: navigator.mediaDevices, * audioInputs: [], * videoInputs: [], * updateAudioInputs: (inputs) => console.log("Audio Inputs:", inputs), * updateVideoInputs: (inputs) => console.log("Video Inputs:", inputs), * }); * ``` */ export const launchMediaSettings = async ({ updateIsMediaSettingsModalVisible, isMediaSettingsModalVisible, mediaDevices, audioInputs, videoInputs, updateAudioInputs, updateVideoInputs, }) => { // Check if media settings modal is not visible and update available audio and video input devices if (!isMediaSettingsModalVisible) { try { // Get the list of all available media devices const devices = await mediaDevices.enumerateDevices(); // Filter the devices to get only audio and video input devices videoInputs = devices.filter((device) => device.kind === 'videoinput'); audioInputs = devices.filter((device) => device.kind === 'audioinput'); // Update the available audio and video input devices updateVideoInputs(videoInputs); updateAudioInputs(audioInputs); } catch (error) { console.log('Error getting media devices', error); } } // Open or close the media settings modal based on its current visibility state updateIsMediaSettingsModalVisible(!isMediaSettingsModalVisible); }; //# sourceMappingURL=launchMediaSettings.js.map