| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | 
							- // @flow
 - 
 - import { CONFERENCE_JOINED, CONFERENCE_LEFT, SET_PASSWORD } from '../base/conference';
 - import { ReducerRegistry } from '../base/redux';
 - 
 - import {
 -     KNOCKING_PARTICIPANT_ARRIVED_OR_UPDATED,
 -     KNOCKING_PARTICIPANT_LEFT,
 -     SET_KNOCKING_STATE,
 -     SET_LOBBY_MODE_ENABLED,
 -     SET_LOBBY_VISIBILITY,
 -     SET_PASSWORD_JOIN_FAILED
 - } from './actionTypes';
 - 
 - const DEFAULT_STATE = {
 -     knocking: false,
 -     knockingParticipants: [],
 -     lobbyEnabled: false,
 -     lobbyVisible: false,
 -     passwordJoinFailed: false
 - };
 - 
 - /**
 -  * Reduces redux actions which affect the display of notifications.
 -  *
 -  * @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/lobby', (state = DEFAULT_STATE, action) => {
 -     switch (action.type) {
 -     case CONFERENCE_JOINED:
 -     case CONFERENCE_LEFT:
 -         return {
 -             ...state,
 -             knocking: false,
 -             passwordJoinFailed: false
 -         };
 -     case KNOCKING_PARTICIPANT_ARRIVED_OR_UPDATED:
 -         return _knockingParticipantArrivedOrUpdated(action.participant, state);
 -     case KNOCKING_PARTICIPANT_LEFT:
 -         return {
 -             ...state,
 -             knockingParticipants: state.knockingParticipants.filter(p => p.id !== action.id)
 -         };
 -     case SET_KNOCKING_STATE:
 -         return {
 -             ...state,
 -             knocking: action.knocking,
 -             passwordJoinFailed: false
 -         };
 -     case SET_LOBBY_MODE_ENABLED:
 -         return {
 -             ...state,
 -             lobbyEnabled: action.enabled
 -         };
 -     case SET_LOBBY_VISIBILITY:
 -         return {
 -             ...state,
 -             lobbyVisible: action.visible
 -         };
 -     case SET_PASSWORD:
 -         return {
 -             ...state,
 -             passwordJoinFailed: false
 -         };
 -     case SET_PASSWORD_JOIN_FAILED:
 -         return {
 -             ...state,
 -             passwordJoinFailed: action.failed
 -         };
 -     }
 - 
 -     return state;
 - });
 - 
 - /**
 -  * Stores or updates a knocking participant.
 -  *
 -  * @param {Object} participant - The arrived or updated knocking participant.
 -  * @param {Object} state - The current Redux state of the feature.
 -  * @returns {Object}
 -  */
 - function _knockingParticipantArrivedOrUpdated(participant, state) {
 -     let existingParticipant = state.knockingParticipants.find(p => p.id === participant.id);
 - 
 -     existingParticipant = {
 -         ...existingParticipant,
 -         ...participant
 -     };
 - 
 -     return {
 -         ...state,
 -         knockingParticipants: [
 -             ...state.knockingParticipants.filter(p => p.id !== participant.id),
 -             existingParticipant
 -         ]
 -     };
 - }
 
 
  |