選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

middleware.web.ts 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import i18next from 'i18next';
  2. import { CONFERENCE_JOINED, KICKED_OUT } from '../base/conference/actionTypes';
  3. import { IJitsiConference } from '../base/conference/reducer';
  4. import { hangup } from '../base/connection/actions.web';
  5. import { JitsiConferenceEvents } from '../base/lib-jitsi-meet';
  6. import { getParticipantDisplayName } from '../base/participants/functions';
  7. import MiddlewareRegistry from '../base/redux/MiddlewareRegistry';
  8. import { openAllowToggleCameraDialog, setCameraFacingMode } from '../base/tracks/actions.web';
  9. import { CAMERA_FACING_MODE_MESSAGE } from '../base/tracks/constants';
  10. import './middleware.any';
  11. MiddlewareRegistry.register(store => next => action => {
  12. switch (action.type) {
  13. case CONFERENCE_JOINED: {
  14. _addSetCameraFacingModeListener(action.conference);
  15. break;
  16. }
  17. case KICKED_OUT: {
  18. const { dispatch } = store;
  19. const { participant } = action;
  20. const participantDisplayName
  21. = getParticipantDisplayName(store.getState, participant.getId());
  22. dispatch(hangup(true, i18next.t('dialog.kickTitle', { participantDisplayName })));
  23. break;
  24. }
  25. }
  26. return next(action);
  27. });
  28. /**
  29. * Registers listener for {@link JitsiConferenceEvents.ENDPOINT_MESSAGE_RECEIVED} that
  30. * will perform various chat related activities.
  31. *
  32. * @param {IJitsiConference} conference - The conference.
  33. * @returns {void}
  34. */
  35. function _addSetCameraFacingModeListener(conference: IJitsiConference) {
  36. conference.on(
  37. JitsiConferenceEvents.ENDPOINT_MESSAGE_RECEIVED,
  38. (...args: any) => {
  39. if (args && args.length >= 2) {
  40. const [ sender, eventData ] = args;
  41. if (eventData.name === CAMERA_FACING_MODE_MESSAGE) {
  42. APP.store.dispatch(openAllowToggleCameraDialog(
  43. /* onAllow */ () => APP.store.dispatch(setCameraFacingMode(eventData.facingMode)),
  44. /* initiatorId */ sender._id
  45. ));
  46. }
  47. }
  48. }
  49. );
  50. }