You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

middleware.web.ts 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* eslint-disable import/order */
  2. import './middleware.any.js';
  3. import { IStore } from '../../app/types';
  4. // @ts-ignore
  5. import { NOTIFICATION_TIMEOUT_TYPE, showNotification } from '../../notifications';
  6. import LocalRecordingManager from '../../recording/components/Recording/LocalRecordingManager.web';
  7. // @ts-ignore
  8. import StopRecordingDialog from '../../recording/components/Recording/web/StopRecordingDialog';
  9. // @ts-ignore
  10. import { openDialog } from '../dialog';
  11. // @ts-ignore
  12. import { MiddlewareRegistry } from '../redux';
  13. import { SET_VIDEO_MUTED } from './actionTypes';
  14. /**
  15. * Implements the entry point of the middleware of the feature base/media.
  16. *
  17. * @param {IStore} store - The redux store.
  18. * @returns {Function}
  19. */
  20. MiddlewareRegistry.register((store: IStore) => (next: Function) => (action: any) => {
  21. const { dispatch } = store;
  22. switch (action.type) {
  23. case SET_VIDEO_MUTED: {
  24. if (LocalRecordingManager.isRecordingLocally() && LocalRecordingManager.selfRecording.on) {
  25. if (action.muted && LocalRecordingManager.selfRecording.withVideo) {
  26. dispatch(openDialog(StopRecordingDialog, { localRecordingVideoStop: true }));
  27. return;
  28. } else if (!action.muted && !LocalRecordingManager.selfRecording.withVideo) {
  29. dispatch(showNotification({
  30. titleKey: 'recording.localRecordingNoVideo',
  31. descriptionKey: 'recording.localRecordingVideoWarning',
  32. uid: 'recording.localRecordingNoVideo'
  33. }, NOTIFICATION_TIMEOUT_TYPE.MEDIUM));
  34. }
  35. }
  36. }
  37. }
  38. return next(action);
  39. });