jiti-meet/react/features/local-recording/middleware.js

55 lines
1.7 KiB
JavaScript
Raw Normal View History

/* @flow */
import { APP_WILL_MOUNT, APP_WILL_UNMOUNT } from '../app';
import { CONFERENCE_JOINED } from '../base/conference';
import { i18next } from '../base/i18n';
import { MiddlewareRegistry } from '../base/redux';
import { showNotification } from '../notifications';
import { recordingController } from './controller';
import { signalLocalRecordingEngagement } from './actions';
MiddlewareRegistry.register(({ getState, dispatch }) => next => action => {
const result = next(action);
switch (action.type) {
case CONFERENCE_JOINED: {
const { conference } = getState()['features/base/conference'];
recordingController.registerEvents(conference);
break;
}
case APP_WILL_MOUNT:
// realize the delegates on recordingController,
// providing UI reactions.
recordingController.onStateChanged = function(state) {
dispatch(signalLocalRecordingEngagement(state));
};
recordingController.onWarning = function(message) {
dispatch(showNotification({
title: i18next.t('localRecording.localRecording'),
description: message
}, 10000));
};
recordingController.onNotify = function(message) {
dispatch(showNotification({
title: i18next.t('localRecording.localRecording'),
description: message
}, 10000));
};
break;
case APP_WILL_UNMOUNT:
recordingController.onStateChanged = null;
recordingController.onNotify = null;
recordingController.onWarning = null;
break;
}
// @todo: detect change in features/base/settings micDeviceID
// @todo: SET_AUDIO_MUTED, when audio is muted
return result;
});