| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import { CONFERENCE_JOINED } from '../base/conference/actionTypes';
- import { SET_CONFIG } from '../base/config/actionTypes';
- import MiddlewareRegistry from '../base/redux/MiddlewareRegistry';
-
- import { setPreferredVideoQuality } from './actions';
- import logger from './logger';
-
- import './subscriber';
-
- /**
- * Implements the middleware of the feature video-quality.
- *
- * @param {Store} store - The redux store.
- * @returns {Function}
- */
- MiddlewareRegistry.register(({ dispatch, getState }) => next => action => {
- const result = next(action);
-
- switch (action.type) {
- case CONFERENCE_JOINED: {
- if (navigator.product === 'ReactNative') {
- const { resolution } = getState()['features/base/config'];
-
- if (typeof resolution !== 'undefined') {
- dispatch(setPreferredVideoQuality(Number.parseInt(`${resolution}`, 10)));
- logger.info(`Configured preferred receiver video frame height to: ${resolution}`);
- }
- }
- break;
- }
- case SET_CONFIG: {
- const state = getState();
- const { videoQuality = {} } = state['features/base/config'];
- const { persistedPrefferedVideoQuality } = state['features/video-quality-persistent-storage'];
-
- if (videoQuality.persist && typeof persistedPrefferedVideoQuality !== 'undefined') {
- dispatch(setPreferredVideoQuality(persistedPrefferedVideoQuality));
- }
-
- break;
- }
- }
-
- return result;
- });
|