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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { AudioMode } from '../base/react-native';
  2. import { APP_WILL_MOUNT } from '../app';
  3. import {
  4. CONFERENCE_FAILED,
  5. CONFERENCE_LEFT,
  6. CONFERENCE_WILL_JOIN
  7. } from '../base/conference';
  8. import { MiddlewareRegistry } from '../base/redux';
  9. /**
  10. * Middleware that captures conference actions and sets the correct audio
  11. * mode based on the type of conference. Audio-only conferences don't
  12. * use the speaker by default, and video conferences do.
  13. *
  14. * @param {Store} store - Redux store.
  15. * @returns {Function}
  16. */
  17. MiddlewareRegistry.register(store => next => action => {
  18. switch (action.type) {
  19. case APP_WILL_MOUNT: {
  20. AudioMode.setMode(AudioMode.DEFAULT)
  21. .catch(err => {
  22. console.warn(`Error setting audio mode: ${err}`);
  23. });
  24. break;
  25. }
  26. case CONFERENCE_WILL_JOIN: {
  27. let mode;
  28. const state = store.getState()['features/base/conference'];
  29. if (state.audioOnly) {
  30. // TODO(saghul): Implement audio-only mode
  31. mode = AudioMode.AUDIO_CALL;
  32. } else {
  33. mode = AudioMode.VIDEO_CALL;
  34. }
  35. AudioMode.setMode(mode)
  36. .catch(err => {
  37. console.warn(`Error setting audio mode: ${err}`);
  38. });
  39. break;
  40. }
  41. case CONFERENCE_FAILED:
  42. case CONFERENCE_LEFT:
  43. AudioMode.setMode(AudioMode.DEFAULT)
  44. .catch(err => {
  45. console.warn(`Error setting audio mode: ${err}`);
  46. });
  47. break;
  48. }
  49. return next(action);
  50. });