123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- // @ts-expect-error
- import UIEvents from '../../../service/UI/UIEvents';
- import { VIDEO_MUTE, createToolbarEvent } from '../analytics/AnalyticsEvents';
- import { sendAnalytics } from '../analytics/functions';
- import { IStore } from '../app/types';
- import { setAudioOnly } from '../base/audio-only/actions';
- import { setVideoMuted } from '../base/media/actions';
- import { MEDIA_TYPE, VIDEO_MUTISM_AUTHORITY } from '../base/media/constants';
-
- import {
- SET_TOOLBOX_ENABLED,
- SET_TOOLBOX_VISIBLE,
- TOGGLE_TOOLBOX_VISIBLE
- } from './actionTypes';
-
- /**
- * Enables/disables the toolbox.
- *
- * @param {boolean} enabled - True to enable the toolbox or false to disable it.
- * @returns {{
- * type: SET_TOOLBOX_ENABLED,
- * enabled: boolean
- * }}
- */
- export function setToolboxEnabled(enabled: boolean) {
- return {
- type: SET_TOOLBOX_ENABLED,
- enabled
- };
- }
-
- /**
- * Shows/hides the toolbox.
- *
- * @param {boolean} visible - True to show the toolbox or false to hide it.
- * @returns {Function}
- */
- export function setToolboxVisible(visible: boolean) {
- return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
- const { toolbarConfig } = getState()['features/base/config'];
- const alwaysVisible = toolbarConfig?.alwaysVisible;
-
- if (!visible && alwaysVisible) {
- return;
- }
-
- dispatch({
- type: SET_TOOLBOX_VISIBLE,
- visible
- });
- };
- }
-
- /**
- * Action to toggle the toolbox visibility.
- *
- * @returns {Function}
- */
- export function toggleToolboxVisible() {
- return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
- const state = getState();
- const { toolbarConfig } = getState()['features/base/config'];
- const alwaysVisible = toolbarConfig?.alwaysVisible;
- const { visible } = state['features/toolbox'];
-
- if (visible && alwaysVisible) {
- return;
- }
-
- dispatch({
- type: TOGGLE_TOOLBOX_VISIBLE
- });
- };
- }
-
-
- /**
- * Action to handle toggle video from toolbox's video buttons.
- *
- * @param {boolean} muted - Whether to mute or unmute.
- * @param {boolean} showUI - When set to false will not display any error.
- * @param {boolean} ensureTrack - True if we want to ensure that a new track is
- * created if missing.
- * @returns {Function}
- */
- export function handleToggleVideoMuted(muted: boolean, showUI: boolean, ensureTrack: boolean) {
- return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
- const state = getState();
- const { enabled: audioOnly } = state['features/base/audio-only'];
-
- sendAnalytics(createToolbarEvent(VIDEO_MUTE, { enable: muted }));
- if (audioOnly) {
- dispatch(setAudioOnly(false));
- }
-
- dispatch(
- setVideoMuted(
- muted,
- MEDIA_TYPE.VIDEO,
- VIDEO_MUTISM_AUTHORITY.USER,
- ensureTrack));
-
- // FIXME: The old conference logic still relies on this event being
- // emitted.
- typeof APP === 'undefined'
- || APP.UI.emitEvent(UIEvents.VIDEO_MUTED, muted, showUI);
-
- };
- }
|