jiti-meet/react/features/base/jwt/reducer.js

64 lines
1.5 KiB
JavaScript
Raw Normal View History

2017-10-12 19:59:11 +00:00
// @flow
2017-10-05 22:54:13 +00:00
import { equals, set, ReducerRegistry } from '../redux';
2017-04-21 10:00:50 +00:00
import { SET_CALL_OVERLAY_VISIBLE, SET_JWT } from './actionTypes';
2017-04-21 10:00:50 +00:00
/**
* The initial redux state of the feature jwt.
*
* @private
* @type {{
2017-10-12 19:59:11 +00:00
* callOverlayVisible: ?boolean
2017-04-21 10:00:50 +00:00
* isGuest: boolean
* }}
*/
const _INITIAL_STATE = {
/**
* The indicator which determines whether (the) {@code CallOverlay} is
* visible.
*
* @type {boolean|undefined}
*/
callOverlayVisible: undefined,
2017-04-21 10:00:50 +00:00
/**
* The indicator which determines whether the local participant is a guest
* in the conference.
*
* @type {boolean}
*/
isGuest: true
};
/**
* Reduces redux actions which affect the JSON Web Token (JWT) stored in the
* redux store.
*
* @param {Object} state - The current redux state.
* @param {Object} action - The redux action to reduce.
* @returns {Object} The next redux state which is the result of reducing the
* specified {@code action}.
*/
2017-10-05 22:54:13 +00:00
ReducerRegistry.register(
2017-10-12 19:59:11 +00:00
'features/base/jwt',
(state = _INITIAL_STATE, action) => {
switch (action.type) {
case SET_CALL_OVERLAY_VISIBLE:
return set(state, 'callOverlayVisible', action.callOverlayVisible);
case SET_JWT: {
// eslint-disable-next-line no-unused-vars
const { type, ...payload } = action;
const nextState = {
..._INITIAL_STATE,
...payload
};
return equals(state, nextState) ? state : nextState;
}
}
return state;
});