Compare commits

...

1 Commits

Author SHA1 Message Date
Horatiu Muresan 525763b969 fix(external-api) Fix notify audio muted/audio available 2022-09-14 15:48:09 +03:00
7 changed files with 53 additions and 7 deletions

View File

@ -2983,7 +2983,6 @@ export default {
const available = audioDeviceCount > 0 || Boolean(localAudio);
APP.store.dispatch(setAudioAvailable(available));
APP.API.notifyAudioAvailabilityChanged(available);
},
/**
@ -3247,7 +3246,6 @@ export default {
*/
setAudioMuteStatus(muted) {
APP.UI.setAudioMuted(this.getMyUserId(), muted);
APP.API.notifyAudioMutedStatusChanged(muted);
},
/**

View File

@ -14,6 +14,8 @@ import MiddlewareRegistry from '../redux/MiddlewareRegistry';
import { SET_VIDEO_MUTED } from './actionTypes';
import './subscriber';
/**
* Implements the entry point of the middleware of the feature base/media.
*

View File

@ -0,0 +1,21 @@
import { IState, IStore } from '../../app/types';
import StateListenerRegistry from '../redux/StateListenerRegistry';
declare let APP: any;
/**
* Notifies when the local audio mute state changes.
*/
StateListenerRegistry.register(
/* selector */ (state: IState) => state['features/base/media'].audio.muted,
/* listener */ (muted: boolean, store: IStore, previousMuted: boolean) => {
if (typeof APP !== 'object') {
return;
}
if (muted !== previousMuted) {
APP.API.notifyAudioMutedStatusChanged(muted);
}
}
);

View File

@ -1,5 +1,7 @@
import { Store } from 'redux';
import { IState } from '../../app/types';
import { equals } from './functions';
import logger from './logger';
@ -24,7 +26,7 @@ type Listener
* The type selector supported for registration with
* {@link StateListenerRegistry} in association with a {@link Listener}.
*
* @param {Object} state - The redux state from which the {@code Selector} is to
* @param {IState} state - The redux state from which the {@code Selector} is to
* derive data.
* @param {any} prevSelection - The value previously derived from the redux
* store/state by the {@code Selector}. Provided in case the {@code Selector}
@ -34,7 +36,7 @@ type Listener
* {@code prevSelection}. The associated {@code Listener} will only be invoked
* if the returned value is other than {@code prevSelection}.
*/
type Selector = (state: Object, prevSelection: any) => any;
type Selector = (state: IState, prevSelection: any) => any;
/**
* Options that can be passed to the register method.

View File

@ -1,12 +1,12 @@
// @flow
import { IState } from '../app/types';
/**
* Indicates if the audio mute button is disabled or not.
*
* @param {Object} state - The state from the Redux store.
* @param {IState} state - The state from the Redux store.
* @returns {boolean}
*/
export function isAudioMuteButtonDisabled(state: Object) {
export function isAudioMuteButtonDisabled(state: IState) {
const { available, muted, unmuteBlocked } = state['features/base/media'].audio;
const { startSilent } = state['features/base/config'];

View File

@ -8,6 +8,7 @@ import {
SET_FULL_SCREEN
} from './actionTypes';
import './subscriber';
declare var APP: Object;

View File

@ -0,0 +1,22 @@
import { IState, IStore } from '../app/types';
import StateListenerRegistry from '../base/redux/StateListenerRegistry';
import { isAudioMuteButtonDisabled } from './functions.any';
declare let APP: any;
/**
* Notifies when audio availability changes.
*/
StateListenerRegistry.register(
/* selector */ (state: IState) => isAudioMuteButtonDisabled(state),
/* listener */ (disabled: boolean, store: IStore, previousDisabled: boolean) => {
if (typeof APP !== 'object') {
return;
}
if (disabled !== previousDisabled) {
APP.API.notifyAudioAvailabilityChanged(!disabled);
}
}
);