| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 
							- // @flow
 - import { notifyKickedOut } from './actions';
 - import { appNavigate } from '../app';
 - import {
 -     CONFERENCE_JOINED,
 -     KICKED_OUT,
 -     VIDEO_QUALITY_LEVELS,
 -     conferenceLeft,
 -     getCurrentConference,
 -     setPreferredReceiverVideoQuality
 - } from '../base/conference';
 - import { hideDialog, isDialogOpen } from '../base/dialog';
 - import { pinParticipant } from '../base/participants';
 - import { SET_REDUCED_UI } from '../base/responsive-ui';
 - import { MiddlewareRegistry, StateListenerRegistry } from '../base/redux';
 - import { FeedbackDialog } from '../feedback';
 - import { setFilmstripEnabled } from '../filmstrip';
 - import { setToolboxEnabled } from '../toolbox';
 - 
 - MiddlewareRegistry.register(store => next => action => {
 -     const result = next(action);
 - 
 -     switch (action.type) {
 -     case CONFERENCE_JOINED:
 -     case SET_REDUCED_UI: {
 -         const { dispatch, getState } = store;
 -         const state = getState();
 -         const { reducedUI } = state['features/base/responsive-ui'];
 - 
 -         dispatch(setToolboxEnabled(!reducedUI));
 -         dispatch(setFilmstripEnabled(!reducedUI));
 - 
 -         dispatch(
 -             setPreferredReceiverVideoQuality(
 -                 reducedUI
 -                     ? VIDEO_QUALITY_LEVELS.LOW
 -                     : VIDEO_QUALITY_LEVELS.HIGH));
 - 
 -         break;
 -     }
 - 
 -     case KICKED_OUT: {
 -         const { dispatch } = store;
 - 
 -         dispatch(notifyKickedOut(
 -             action.participant,
 -             () => {
 -                 dispatch(conferenceLeft(action.conference));
 -                 dispatch(appNavigate(undefined));
 -             }
 -         ));
 - 
 -         break;
 -     }
 -     }
 - 
 -     return result;
 - });
 - 
 - /**
 -  * Set up state change listener to perform maintenance tasks when the conference
 -  * is left or failed, close all dialogs and unpin any pinned participants.
 -  */
 - StateListenerRegistry.register(
 -     state => getCurrentConference(state),
 -     (conference, { dispatch, getState }, prevConference) => {
 -         const { authRequired, passwordRequired }
 -             = getState()['features/base/conference'];
 - 
 -         if (conference !== prevConference) {
 -             // Unpin participant, in order to avoid the local participant
 -             // remaining pinned, since it's not destroyed across runs.
 -             dispatch(pinParticipant(null));
 - 
 -             // XXX I wonder if there is a better way to do this. At this stage
 -             // we do know what dialogs we want to keep but the list of those
 -             // we want to hide is a lot longer. Thus we take a bit of a shortcut
 -             // and explicitly check.
 -             if (typeof authRequired === 'undefined'
 -                     && typeof passwordRequired === 'undefined'
 -                     && !isDialogOpen(getState(), FeedbackDialog)) {
 -                 // Conference changed, left or failed... and there is no
 -                 // pending authentication, nor feedback request, so close any
 -                 // dialog we might have open.
 -                 dispatch(hideDialog());
 -             }
 -         }
 -     });
 
 
  |