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

middleware.js 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // @flow
  2. import { CONFERENCE_FAILED, CONFERENCE_JOINED } from '../base/conference';
  3. import { NOTIFY_CAMERA_ERROR, NOTIFY_MIC_ERROR } from '../base/devices';
  4. import { JitsiConferenceErrors } from '../base/lib-jitsi-meet';
  5. import {
  6. getAvatarURLByParticipantId,
  7. getLocalParticipant
  8. } from '../base/participants';
  9. import { MiddlewareRegistry } from '../base/redux';
  10. import { appendSuffix } from '../display-name';
  11. import { SUBMIT_FEEDBACK } from '../feedback';
  12. import { SET_FILMSTRIP_VISIBLE } from '../filmstrip';
  13. declare var APP: Object;
  14. declare var interfaceConfig: Object;
  15. /**
  16. * The middleware of the feature {@code external-api}.
  17. *
  18. * @returns {Function}
  19. */
  20. MiddlewareRegistry.register(store => next => action => {
  21. const result = next(action);
  22. switch (action.type) {
  23. case CONFERENCE_FAILED: {
  24. if (action.conference
  25. && action.error.name === JitsiConferenceErrors.PASSWORD_REQUIRED) {
  26. APP.API.notifyOnPasswordRequired();
  27. }
  28. break;
  29. }
  30. case CONFERENCE_JOINED: {
  31. const state = store.getState();
  32. const { room } = state['features/base/conference'];
  33. const { name, id } = getLocalParticipant(state);
  34. APP.API.notifyConferenceJoined(
  35. room,
  36. id,
  37. {
  38. displayName: name,
  39. formattedDisplayName: appendSuffix(
  40. name,
  41. interfaceConfig.DEFAULT_LOCAL_DISPLAY_NAME
  42. ),
  43. avatarURL: getAvatarURLByParticipantId(state, id)
  44. }
  45. );
  46. break;
  47. }
  48. case NOTIFY_CAMERA_ERROR:
  49. if (action.error) {
  50. APP.API.notifyOnCameraError(
  51. action.error.name, action.error.message);
  52. }
  53. break;
  54. case NOTIFY_MIC_ERROR:
  55. if (action.error) {
  56. APP.API.notifyOnMicError(action.error.name, action.error.message);
  57. }
  58. break;
  59. case SET_FILMSTRIP_VISIBLE:
  60. APP.API.notifyFilmstripDisplayChanged(action.visible);
  61. break;
  62. case SUBMIT_FEEDBACK:
  63. APP.API.notifyFeedbackSubmitted();
  64. break;
  65. }
  66. return result;
  67. });