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.

reducer.js 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // @flow
  2. import { PARTICIPANT_ID_CHANGED } from '../base/participants';
  3. import { ReducerRegistry } from '../base/redux';
  4. import {
  5. SELECT_LARGE_VIDEO_PARTICIPANT,
  6. UPDATE_KNOWN_LARGE_VIDEO_RESOLUTION, UPDATE_LAST_LARGE_VIDEO_MEDIA_EVENT
  7. } from './actionTypes';
  8. ReducerRegistry.register('features/large-video', (state = {}, action) => {
  9. switch (action.type) {
  10. // When conference is joined, we update ID of local participant from default
  11. // 'local' to real ID. However, in large video we might have already
  12. // selected 'local' as participant on stage. So in this case we must update
  13. // ID of participant on stage to match ID in 'participants' state to avoid
  14. // additional changes in state and (re)renders.
  15. case PARTICIPANT_ID_CHANGED:
  16. if (state.participantId === action.oldValue) {
  17. return {
  18. ...state,
  19. participantId: action.newValue
  20. };
  21. }
  22. break;
  23. case SELECT_LARGE_VIDEO_PARTICIPANT:
  24. return {
  25. ...state,
  26. participantId: action.participantId
  27. };
  28. case UPDATE_KNOWN_LARGE_VIDEO_RESOLUTION:
  29. return {
  30. ...state,
  31. resolution: action.resolution
  32. };
  33. case UPDATE_LAST_LARGE_VIDEO_MEDIA_EVENT:
  34. return {
  35. ...state,
  36. lastMediaEvent: action.name
  37. };
  38. }
  39. return state;
  40. });