| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | // @flow
import { equals, set, ReducerRegistry } from '../redux';
import { SET_CALL_OVERLAY_VISIBLE, SET_JWT } from './actionTypes';
/**
 * The initial redux state of the feature jwt.
 *
 * @private
 * @type {{
 *     callOverlayVisible: ?boolean
 *     isGuest: boolean
 * }}
 */
const _INITIAL_STATE = {
    /**
     * The indicator which determines whether (the) {@code CallOverlay} is
     * visible.
     *
     * @type {boolean|undefined}
     */
    callOverlayVisible: undefined,
    /**
     * 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}.
 */
ReducerRegistry.register(
    '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;
    });
 |