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.ts 1.7KB

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