import { SET_AUDIO_MUTED, SET_CAMERA_FACING_MODE, SET_VIDEO_MUTED } from './actionTypes'; import { CAMERA_FACING_MODE } from './constants'; import './middleware'; import './reducer'; /** * Action to set the muted state of the local audio. * * @param {boolean} muted - True if the local audio is to be muted or false if * the local audio is to be unmuted. * @returns {{ * type: SET_AUDIO_MUTED, * muted: boolean * }} */ export function setAudioMuted(muted) { return { type: SET_AUDIO_MUTED, muted }; } /** * Action to set the facing mode of the local camera. * * @param {CAMERA_FACING_MODE} cameraFacingMode - The camera facing mode to set. * @returns {{ * type: SET_CAMERA_FACING_MODE, * cameraFacingMode: CAMERA_FACING_MODE * }} */ export function setCameraFacingMode(cameraFacingMode) { return { type: SET_CAMERA_FACING_MODE, cameraFacingMode }; } /** * Action to set the muted state of the local video. * * @param {boolean} muted - True if the local video is to be muted or false if * the local video is to be unmuted. * @returns {{ * type: SET_VIDEO_MUTED, * muted: boolean * }} */ export function setVideoMuted(muted) { return { type: SET_VIDEO_MUTED, muted }; } /** * Toggles the mute state of the local audio track(s). * * @returns {Function} */ export function toggleAudioMuted() { return (dispatch, getState) => { const muted = getState()['features/base/media'].audio.muted; return dispatch(setAudioMuted(!muted)); }; } /** * Toggles the camera between front and rear (user and environment). * * @returns {Function} */ export function toggleCameraFacingMode() { return (dispatch, getState) => { let cameraFacingMode = getState()['features/base/media'].video.facingMode; cameraFacingMode = cameraFacingMode === CAMERA_FACING_MODE.USER ? CAMERA_FACING_MODE.ENVIRONMENT : CAMERA_FACING_MODE.USER; return dispatch(setCameraFacingMode(cameraFacingMode)); }; } /** * Toggles the mute state of the local video track(s). * * @returns {Function} */ export function toggleVideoMuted() { return (dispatch, getState) => { const muted = getState()['features/base/media'].video.muted; return dispatch(setVideoMuted(!muted)); }; }