Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

middleware.js 2.6KB

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