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

middleware.js 1.8KB

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