| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- /* @flow */
 - 
 - import type { Dispatch } from 'redux';
 - 
 - import {
 -     SET_AUDIO_MUTED,
 -     SET_AUDIO_AVAILABLE,
 -     SET_CAMERA_FACING_MODE,
 -     SET_VIDEO_AVAILABLE,
 -     SET_VIDEO_MUTED,
 -     STORE_VIDEO_TRANSFORM,
 -     TOGGLE_CAMERA_FACING_MODE
 - } from './actionTypes';
 - import { CAMERA_FACING_MODE, VIDEO_MUTISM_AUTHORITY } from './constants';
 - 
 - /**
 -  * Action to adjust the availability of the local audio.
 -  *
 -  * @param {boolean} available - True if the local audio is to be marked as
 -  * available or false if the local audio is not available.
 -  * @returns {{
 -  *     type: SET_AUDIO_AVAILABLE,
 -  *     available: boolean
 -  * }}
 -  */
 - export function setAudioAvailable(available: boolean) {
 -     return {
 -         type: SET_AUDIO_AVAILABLE,
 -         available
 -     };
 - }
 - 
 - /**
 -  * 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.
 -  * @param {boolean} ensureTrack - True if we want to ensure that a new track is
 -  * created if missing.
 -  * @returns {{
 -  *     type: SET_AUDIO_MUTED,
 -  *     ensureTrack: boolean,
 -  *     muted: boolean
 -  * }}
 -  */
 - export function setAudioMuted(muted: boolean, ensureTrack: boolean = false) {
 -     return {
 -         type: SET_AUDIO_MUTED,
 -         ensureTrack,
 -         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: CAMERA_FACING_MODE) {
 -     return {
 -         type: SET_CAMERA_FACING_MODE,
 -         cameraFacingMode
 -     };
 - }
 - 
 - /**
 -  * Action to adjust the availability of the local video.
 -  *
 -  * @param {boolean} available - True if the local video is to be marked as
 -  * available or false if the local video is not available.
 -  * @returns {{
 -  *     type: SET_VIDEO_AVAILABLE,
 -  *     available: boolean
 -  * }}
 -  */
 - export function setVideoAvailable(available: boolean) {
 -     return {
 -         type: SET_VIDEO_AVAILABLE,
 -         available
 -     };
 - }
 - 
 - /**
 -  * 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.
 -  * @param {number} authority - The {@link VIDEO_MUTISM_AUTHORITY} which is
 -  * muting/unmuting the local video.
 -  * @param {boolean} ensureTrack - True if we want to ensure that a new track is
 -  * created if missing.
 -  * @returns {Function}
 -  */
 - export function setVideoMuted(
 -         muted: boolean,
 -         authority: number = VIDEO_MUTISM_AUTHORITY.USER,
 -         ensureTrack: boolean = false) {
 -     return (dispatch: Dispatch<any>, getState: Function) => {
 -         const oldValue = getState()['features/base/media'].video.muted;
 - 
 -         // eslint-disable-next-line no-bitwise
 -         const newValue = muted ? oldValue | authority : oldValue & ~authority;
 - 
 -         return dispatch({
 -             type: SET_VIDEO_MUTED,
 -             ensureTrack,
 -             muted: newValue
 -         });
 -     };
 - }
 - 
 - /**
 -  * Creates an action to store the last video {@link Transform} applied to a
 -  * stream.
 -  *
 -  * @param {string} streamId - The ID of the stream.
 -  * @param {Object} transform - The {@code Transform} to store.
 -  * @returns {{
 -  *     type: STORE_VIDEO_TRANSFORM,
 -  *     streamId: string,
 -  *     transform: Object
 -  * }}
 -  */
 - export function storeVideoTransform(streamId: string, transform: Object) {
 -     return {
 -         type: STORE_VIDEO_TRANSFORM,
 -         streamId,
 -         transform
 -     };
 - }
 - 
 - /**
 -  * Toggles the camera facing mode. Most commonly, for example, mobile devices
 -  * such as phones have a front/user-facing and a back/environment-facing
 -  * cameras. In contrast to setCameraFacingMode, allows the toggling to be
 -  * optimally and/or natively implemented without the overhead of separate reads
 -  * and writes of the current/effective camera facing mode.
 -  *
 -  * @returns {{
 -  *     type: TOGGLE_CAMERA_FACING_MODE
 -  * }}
 -  */
 - export function toggleCameraFacingMode() {
 -     return {
 -         type: TOGGLE_CAMERA_FACING_MODE
 -     };
 - }
 
 
  |