jiti-meet/react/features/base/media/actions.js

102 lines
2.3 KiB
JavaScript

import {
AUDIO_MUTED_CHANGED,
CAMERA_FACING_MODE_CHANGED,
VIDEO_MUTED_CHANGED
} from './actionTypes';
import { CAMERA_FACING_MODE } from './constants';
import './middleware';
import './reducer';
/**
* Action to signal the change in local audio muted state.
*
* @param {boolean} muted - If local audio is muted.
* @returns {{
* type: AUDIO_MUTED_CHANGED,
* muted: boolean
* }}
*/
export function audioMutedChanged(muted) {
return {
type: AUDIO_MUTED_CHANGED,
muted
};
}
/**
* Action to signal the change in facing mode of local video camera.
*
* @param {CAMERA_FACING_MODE} cameraFacingMode - Camera facing mode.
* @returns {{
* type: CAMERA_FACING_MODE_CHANGED,
* cameraFacingMode: CAMERA_FACING_MODE
* }}
*/
export function cameraFacingModeChanged(cameraFacingMode) {
return {
type: CAMERA_FACING_MODE_CHANGED,
cameraFacingMode
};
}
/**
* 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(audioMutedChanged(!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(cameraFacingModeChanged(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(videoMutedChanged(!muted));
};
}
/**
* Action to signal the change in local video muted state.
*
* @param {boolean} muted - If local video is muted.
* @returns {{
* type: VIDEO_MUTED_CHANGED,
* muted: boolean
* }}
*/
export function videoMutedChanged(muted) {
return {
type: VIDEO_MUTED_CHANGED,
muted
};
}