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 2.0KB

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