fix(external-api) Fix notify audio muted/audio available
This commit is contained in:
parent
95084e1004
commit
525763b969
|
@ -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);
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
);
|
|
@ -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.
|
||||
|
|
|
@ -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'];
|
||||
|
|
@ -8,6 +8,7 @@ import {
|
|||
SET_FULL_SCREEN
|
||||
} from './actionTypes';
|
||||
|
||||
import './subscriber';
|
||||
|
||||
declare var APP: Object;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
);
|
Loading…
Reference in New Issue