Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

middleware.js 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { getAppProp } from '../../base/app/functions';
  2. import {
  3. CONFERENCE_BLURRED,
  4. CONFERENCE_FOCUSED,
  5. CONFERENCE_JOINED,
  6. CONFERENCE_LEFT,
  7. CONFERENCE_WILL_JOIN
  8. } from '../../base/conference/actionTypes';
  9. import { SET_AUDIO_MUTED, SET_VIDEO_MUTED } from '../../base/media/actionTypes';
  10. import { PARTICIPANT_JOINED, PARTICIPANT_LEFT } from '../../base/participants/actionTypes';
  11. import MiddlewareRegistry from '../../base/redux/MiddlewareRegistry';
  12. import { READY_TO_CLOSE } from '../external-api/actionTypes';
  13. import { participantToParticipantInfo } from '../external-api/functions';
  14. import { ENTER_PICTURE_IN_PICTURE } from '../picture-in-picture/actionTypes';
  15. import { isExternalAPIAvailable } from './functions';
  16. const externalAPIEnabled = isExternalAPIAvailable();
  17. /**
  18. * Check if native modules are being used or not.
  19. * If not, then the init of middleware doesn't happen.
  20. */
  21. !externalAPIEnabled && MiddlewareRegistry.register(store => next => action => {
  22. const result = next(action);
  23. const { type } = action;
  24. const rnSdkHandlers = getAppProp(store, 'rnSdkHandlers');
  25. switch (type) {
  26. case SET_AUDIO_MUTED:
  27. rnSdkHandlers?.onAudioMutedChanged && rnSdkHandlers?.onAudioMutedChanged(action.muted);
  28. break;
  29. case SET_VIDEO_MUTED:
  30. rnSdkHandlers?.onVideoMutedChanged && rnSdkHandlers?.onVideoMutedChanged(Boolean(action.muted));
  31. break;
  32. case CONFERENCE_BLURRED:
  33. rnSdkHandlers?.onConferenceBlurred && rnSdkHandlers?.onConferenceBlurred();
  34. break;
  35. case CONFERENCE_FOCUSED:
  36. rnSdkHandlers?.onConferenceFocused && rnSdkHandlers?.onConferenceFocused();
  37. break;
  38. case CONFERENCE_JOINED:
  39. rnSdkHandlers?.onConferenceJoined && rnSdkHandlers?.onConferenceJoined();
  40. break;
  41. case CONFERENCE_LEFT:
  42. // Props are torn down at this point, perhaps need to leave this one out
  43. break;
  44. case CONFERENCE_WILL_JOIN:
  45. rnSdkHandlers?.onConferenceWillJoin && rnSdkHandlers?.onConferenceWillJoin();
  46. break;
  47. case ENTER_PICTURE_IN_PICTURE:
  48. rnSdkHandlers?.onEnterPictureInPicture && rnSdkHandlers?.onEnterPictureInPicture();
  49. break;
  50. case PARTICIPANT_JOINED: {
  51. const { participant } = action;
  52. const participantInfo = participantToParticipantInfo(participant);
  53. rnSdkHandlers?.onParticipantJoined && rnSdkHandlers?.onParticipantJoined(participantInfo);
  54. break;
  55. }
  56. case PARTICIPANT_LEFT: {
  57. const { participant } = action;
  58. const { id } = participant ?? {};
  59. rnSdkHandlers?.onParticipantLeft && rnSdkHandlers?.onParticipantLeft({ id });
  60. break;
  61. }
  62. case READY_TO_CLOSE:
  63. rnSdkHandlers?.onReadyToClose && rnSdkHandlers?.onReadyToClose();
  64. break;
  65. }
  66. return result;
  67. });