You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

middleware.ts 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { CONFERENCE_JOINED } from '../base/conference/actionTypes';
  2. import { SET_CONFIG } from '../base/config/actionTypes';
  3. import MiddlewareRegistry from '../base/redux/MiddlewareRegistry';
  4. import { setPreferredVideoQuality } from './actions';
  5. import logger from './logger';
  6. import './subscriber';
  7. /**
  8. * Implements the middleware of the feature video-quality.
  9. *
  10. * @param {Store} store - The redux store.
  11. * @returns {Function}
  12. */
  13. MiddlewareRegistry.register(({ dispatch, getState }) => next => action => {
  14. const result = next(action);
  15. switch (action.type) {
  16. case CONFERENCE_JOINED: {
  17. if (navigator.product === 'ReactNative') {
  18. const { resolution } = getState()['features/base/config'];
  19. if (typeof resolution !== 'undefined') {
  20. dispatch(setPreferredVideoQuality(Number.parseInt(`${resolution}`, 10)));
  21. logger.info(`Configured preferred receiver video frame height to: ${resolution}`);
  22. }
  23. }
  24. break;
  25. }
  26. case SET_CONFIG: {
  27. const state = getState();
  28. const { videoQuality = {} } = state['features/base/config'];
  29. const { persistedPrefferedVideoQuality } = state['features/video-quality-persistent-storage'];
  30. if (videoQuality.persist && typeof persistedPrefferedVideoQuality !== 'undefined') {
  31. dispatch(setPreferredVideoQuality(persistedPrefferedVideoQuality));
  32. }
  33. break;
  34. }
  35. }
  36. return result;
  37. });