jiti-meet/react/features/base/lib-jitsi-meet/middleware.js

46 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:
action.participant.local && store.dispatch(disposeLib());
break;
case SET_CONFIG: {
const { dispatch, getState } = store;
const initialized
= getState()['features/base/lib-jitsi-meet'].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
= initialized ? dispatch(disposeLib()) : Promise.resolve();
promise.then(dispatch(initLib()));
break;
}
}
return next(action);
});