jiti-meet/react/features/invite/middleware.web.js

51 lines
1.5 KiB
JavaScript

// @flow
import { openDialog } from '../base/dialog';
import { MiddlewareRegistry } from '../base/redux';
import { BEGIN_ADD_PEOPLE } from './actionTypes';
import { AddPeopleDialog } from './components';
import { isAddPeopleEnabled, isDialOutEnabled } from './functions';
import './middleware.any';
/**
* The middleware of the feature invite specific to Web/React.
*
* @param {Store} store - The redux store.
* @returns {Function}
*/
MiddlewareRegistry.register(store => next => action => {
switch (action.type) {
case BEGIN_ADD_PEOPLE:
return _beginAddPeople(store, next, action);
}
return next(action);
});
/**
* Notifies the feature invite that the action {@link BEGIN_ADD_PEOPLE} is being
* dispatched within a specific redux {@code store}.
*
* @param {Store} store - The redux store in which the specified {@code action}
* is being dispatched.
* @param {Dispatch} next - The redux {@code dispatch} function to dispatch the
* specified {@code action} to the specified {@code store}.
* @param {Action} action - The redux action {@code BEGIN_ADD_PEOPLE} which is
* being dispatched in the specified {@code store}.
* @private
* @returns {*} The value returned by {@code next(action)}.
*/
function _beginAddPeople({ dispatch, getState }, next, action) {
const result = next(action);
const state = getState();
dispatch(openDialog(AddPeopleDialog, {
addPeopleEnabled: isAddPeopleEnabled(state),
dialOutEnabled: isDialOutEnabled(state)
}));
return result;
}