您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

middleware.js 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // @flow
  2. import { updateConfig } from '../base/config';
  3. import { SET_AUDIO_MUTED, SET_VIDEO_MUTED } from '../base/media';
  4. import { MiddlewareRegistry } from '../base/redux';
  5. import { updateSettings } from '../base/settings';
  6. import { getLocalVideoTrack, replaceLocalTrack } from '../base/tracks';
  7. import { PREJOIN_START_CONFERENCE } from './actionTypes';
  8. import { setPrejoinPageVisibility } from './actions';
  9. import { isPrejoinPageVisible } from './functions';
  10. declare var APP: Object;
  11. /**
  12. * The redux middleware for {@link PrejoinPage}.
  13. *
  14. * @param {Store} store - The redux store.
  15. * @returns {Function}
  16. */
  17. MiddlewareRegistry.register(store => next => async action => {
  18. switch (action.type) {
  19. case PREJOIN_START_CONFERENCE: {
  20. const { getState, dispatch } = store;
  21. const state = getState();
  22. const { userSelectedSkipPrejoin } = state['features/prejoin'];
  23. const localVideoTrack = getLocalVideoTrack(state['features/base/tracks']);
  24. const { options } = action;
  25. options && store.dispatch(updateConfig(options));
  26. userSelectedSkipPrejoin && dispatch(updateSettings({
  27. userSelectedSkipPrejoin
  28. }));
  29. if (localVideoTrack?.muted) {
  30. await dispatch(replaceLocalTrack(localVideoTrack.jitsiTrack, null));
  31. }
  32. const jitsiTracks = getState()['features/base/tracks'].map(t => t.jitsiTrack);
  33. dispatch(setPrejoinPageVisibility(false));
  34. APP.conference.prejoinStart(jitsiTracks);
  35. break;
  36. }
  37. case SET_AUDIO_MUTED: {
  38. if (isPrejoinPageVisible(store.getState())) {
  39. store.dispatch(updateSettings({
  40. startWithAudioMuted: Boolean(action.muted)
  41. }));
  42. }
  43. break;
  44. }
  45. case SET_VIDEO_MUTED: {
  46. if (isPrejoinPageVisible(store.getState())) {
  47. store.dispatch(updateSettings({
  48. startWithVideoMuted: Boolean(action.muted)
  49. }));
  50. }
  51. break;
  52. }
  53. }
  54. return next(action);
  55. });