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.js 1.4KB

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