fix(external-api) Fix notify audio muted/audio available

This commit is contained in:
Horatiu Muresan 2022-09-14 15:48:09 +03:00
parent 658ec987d3
commit 1b5d193149
7 changed files with 50 additions and 6 deletions

View File

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

View File

@ -17,6 +17,8 @@ import MiddlewareRegistry from '../redux/MiddlewareRegistry';
import { SET_VIDEO_MUTED } from './actionTypes'; import { SET_VIDEO_MUTED } from './actionTypes';
import './subscriber';
/** /**
* Implements the entry point of the middleware of the feature base/media. * 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

@ -27,7 +27,7 @@ type Listener
* The type selector supported for registration with * The type selector supported for registration with
* {@link StateListenerRegistry} in association with a {@link Listener}. * {@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. * derive data.
* @param {any} prevSelection - The value previously derived from the redux * @param {any} prevSelection - The value previously derived from the redux
* store/state by the {@code Selector}. Provided in case the {@code Selector} * store/state by the {@code Selector}. Provided in case the {@code Selector}

View File

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

View File

@ -8,6 +8,7 @@ import {
SET_FULL_SCREEN SET_FULL_SCREEN
} from './actionTypes'; } from './actionTypes';
import './subscriber';
declare var APP: Object; 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);
}
}
);