mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-15 00:47:48 +00:00
* Update moderation in effect notifications Only display one notification for each media type. Display notification for keyboard shortcuts as well * Update muted remotely notification Display name of moderator in the notification * Fix indentation on moderation menu * Update text for video moderation * Added moderator label in participant pane * Update microphone icon in participant list For participants that speak, or are noisy, but aren't dominant speaker, the icon in the participant list will look the same as the dominant speaker icon but will not change their position in the list * Added sound for asked to unmute notification * Code review changes * Code review changes Use simple var instead of function for audio media state * Move constants to constants file * Moved constants from notifications to av-moderation
175 lines
4.8 KiB
JavaScript
175 lines
4.8 KiB
JavaScript
/* @flow */
|
|
|
|
import type { Dispatch } from 'redux';
|
|
|
|
import { showModeratedNotification } from '../../av-moderation/actions';
|
|
import { shouldShowModeratedNotification } from '../../av-moderation/functions';
|
|
import { isModerationNotificationDisplayed } from '../../notifications';
|
|
|
|
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 {
|
|
MEDIA_TYPE,
|
|
type MediaType,
|
|
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: string) {
|
|
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 {MEDIA_TYPE} mediaType - The type of media.
|
|
* @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,
|
|
mediaType: MediaType = MEDIA_TYPE.VIDEO,
|
|
authority: number = VIDEO_MUTISM_AUTHORITY.USER,
|
|
ensureTrack: boolean = false) {
|
|
return (dispatch: Dispatch<any>, getState: Function) => {
|
|
const state = getState();
|
|
|
|
// check for A/V Moderation when trying to unmute
|
|
if (!muted && shouldShowModeratedNotification(MEDIA_TYPE.VIDEO, state)) {
|
|
if (!isModerationNotificationDisplayed(MEDIA_TYPE.VIDEO, state)) {
|
|
ensureTrack && dispatch(showModeratedNotification(MEDIA_TYPE.VIDEO));
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
const oldValue = state['features/base/media'].video.muted;
|
|
|
|
// eslint-disable-next-line no-bitwise
|
|
const newValue = muted ? oldValue | authority : oldValue & ~authority;
|
|
|
|
return dispatch({
|
|
type: SET_VIDEO_MUTED,
|
|
authority,
|
|
mediaType,
|
|
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
|
|
};
|
|
}
|