| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- /* @flow */
 - 
 - import { createShortcutEvent, sendAnalytics } from '../analytics';
 - import { APP_WILL_UNMOUNT } from '../base/app';
 - import { CONFERENCE_JOINED } from '../base/conference';
 - import { toggleDialog } from '../base/dialog';
 - import { i18next } from '../base/i18n';
 - import { SET_AUDIO_MUTED } from '../base/media';
 - import { MiddlewareRegistry } from '../base/redux';
 - import { SETTINGS_UPDATED } from '../base/settings/actionTypes';
 - import { showNotification } from '../notifications';
 - 
 - import { localRecordingEngaged, localRecordingUnengaged } from './actions';
 - import { LocalRecordingInfoDialog } from './components';
 - import { recordingController } from './controller';
 - 
 - declare var APP: Object;
 - 
 - MiddlewareRegistry.register(({ getState, dispatch }) => next => action => {
 -     const result = next(action);
 - 
 -     switch (action.type) {
 -     case CONFERENCE_JOINED: {
 -         const { localRecording } = getState()['features/base/config'];
 -         const isLocalRecordingEnabled = Boolean(
 -             localRecording
 -             && localRecording.enabled
 -             && typeof APP === 'object'
 -         );
 - 
 -         if (!isLocalRecordingEnabled) {
 -             break;
 -         }
 - 
 -         // realize the delegates on recordingController, allowing the UI to
 -         // react to state changes in recordingController.
 -         recordingController.onStateChanged = isEngaged => {
 -             if (isEngaged) {
 -                 const nowTime = new Date();
 - 
 -                 dispatch(localRecordingEngaged(nowTime));
 -             } else {
 -                 dispatch(localRecordingUnengaged());
 -             }
 -         };
 - 
 -         recordingController.onWarning = (messageKey, messageParams) => {
 -             dispatch(showNotification({
 -                 title: i18next.t('localRecording.localRecording'),
 -                 description: i18next.t(messageKey, messageParams)
 -             }, 10000));
 -         };
 - 
 -         recordingController.onNotify = (messageKey, messageParams) => {
 -             dispatch(showNotification({
 -                 title: i18next.t('localRecording.localRecording'),
 -                 description: i18next.t(messageKey, messageParams)
 -             }, 10000));
 -         };
 - 
 -         typeof APP === 'object' && typeof APP.keyboardshortcut === 'object'
 -             && APP.keyboardshortcut.registerShortcut('L', null, () => {
 -                 sendAnalytics(createShortcutEvent('local.recording'));
 -                 dispatch(toggleDialog(LocalRecordingInfoDialog));
 -             }, 'keyboardShortcuts.localRecording');
 - 
 -         if (localRecording.format) {
 -             recordingController.switchFormat(localRecording.format);
 -         }
 - 
 -         const { conference } = getState()['features/base/conference'];
 - 
 -         recordingController.registerEvents(conference);
 - 
 -         break;
 -     }
 -     case APP_WILL_UNMOUNT:
 -         recordingController.onStateChanged = null;
 -         recordingController.onNotify = null;
 -         recordingController.onWarning = null;
 -         break;
 -     case SET_AUDIO_MUTED:
 -         recordingController.setMuted(action.muted);
 -         break;
 -     case SETTINGS_UPDATED: {
 -         const { micDeviceId } = getState()['features/base/settings'];
 - 
 -         if (micDeviceId) {
 -             recordingController.setMicDevice(micDeviceId);
 -         }
 -         break;
 -     }
 -     }
 - 
 -     return result;
 - });
 
 
  |