Files
jitsi-meet/react/features/base/lib-jitsi-meet/middleware.js
Lyubomir Marinov d55e0f70d9 Import jitsi/jitsi-meet-react#2f23d98
As an intermediate step on the path to merging jitsi-meet and
jitsi-meet-react, import the whole source code of jitsi-meet-react as it
stands at
2f23d98424
i.e. the lastest master at the time of this import. No modifications are
applied to the imported source code in order to preserve a complete
snapshot of it in the repository of jitsi-meet and, thus, facilitate
comparison later on. Consequently, the source code of jitsi-meet and/or
jitsi-meet-react may not work. For example, jitsi-meet's jshint may be
unable to parse jitsi-meet-react's source code.
2016-10-12 10:31:52 -05:00

49 lines
1.4 KiB
JavaScript

import { PARTICIPANT_LEFT } from '../participants';
import { MiddlewareRegistry } from '../redux';
import {
disposeLib,
initLib
} from './actions';
import { SET_CONFIG } from './actionTypes';
/**
* Middleware that captures PARTICIPANT_LEFT action for a local participant
* (which signalizes that we finally left the app) and disposes lib-jitsi-meet.
* Also captures SET_CONFIG action and disposes previous instance (if any) of
* lib-jitsi-meet, and initializes a new one with new config.
*
* @param {Store} store - Redux store.
* @returns {Function}
*/
MiddlewareRegistry.register(store => next => action => {
switch (action.type) {
case PARTICIPANT_LEFT:
if (action.participant.local) {
store.dispatch(disposeLib());
}
break;
case SET_CONFIG: {
const { dispatch, getState } = store;
const libInitialized = getState()['features/base/lib'].initialized;
// XXX If we already have config, that means new config is coming, which
// means that we should dispose instance of lib initialized with
// previous config first.
// TODO Currently 'disposeLib' actually does not dispose lib-jitsi-meet.
// This functionality should be implemented.
const promise = libInitialized
? dispatch(disposeLib())
: Promise.resolve();
promise
.then(dispatch(initLib()));
break;
}
}
return next(action);
});