| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | 
							- /* global APP */
 - 
 - import UIEvents from '../../../service/UI/UIEvents';
 - 
 - import {
 -     CONFERENCE_FAILED,
 -     LOCK_STATE_CHANGED,
 -     SET_PASSWORD_FAILED
 - } from '../base/conference';
 - import { JitsiConferenceErrors } from '../base/lib-jitsi-meet';
 - import { MiddlewareRegistry } from '../base/redux';
 - 
 - import { _showPasswordDialog } from './actions';
 - 
 - const logger = require('jitsi-meet-logger').getLogger(__filename);
 - 
 - /**
 -  * Middleware that captures conference failed and checks for password required
 -  * error and requests a dialog for user to enter password.
 -  *
 -  * @param {Store} store - Redux store.
 -  * @returns {Function}
 -  */
 - MiddlewareRegistry.register(store => next => action => {
 -     switch (action.type) {
 -     case CONFERENCE_FAILED: {
 -         const { conference, error } = action;
 - 
 -         if (conference && error === JitsiConferenceErrors.PASSWORD_REQUIRED) {
 -             // XXX Temporary solution while some components are not listening
 -             // for lock state updates in redux.
 -             if (typeof APP !== 'undefined') {
 -                 APP.UI.emitEvent(UIEvents.TOGGLE_ROOM_LOCK, true);
 -             }
 - 
 -             store.dispatch(_showPasswordDialog(conference));
 -         }
 -         break;
 -     }
 - 
 -     case LOCK_STATE_CHANGED:
 -         // TODO Remove this logic when all components interested in the lock
 -         // state change event are moved into react/redux.
 -         if (typeof APP !== 'undefined') {
 -             APP.UI.emitEvent(UIEvents.TOGGLE_ROOM_LOCK, action.locked);
 -         }
 -         break;
 - 
 -     case SET_PASSWORD_FAILED:
 -         return _setPasswordFailed(store, next, action);
 -     }
 - 
 -     return next(action);
 - });
 - 
 - /**
 -  * Handles errors that occur when a password fails to be set.
 -  *
 -  * @param {Store} store - The Redux store in which the specified action is being
 -  * dispatched.
 -  * @param {Dispatch} next - The Redux dispatch function to dispatch the
 -  * specified action to the specified store.
 -  * @param {Action} action - The Redux action SET_PASSWORD_ERROR which has the
 -  * error type that should be handled.
 -  * @private
 -  * @returns {Object} The new state that is the result of the reduction of the
 -  * specified action.
 -  */
 - function _setPasswordFailed(store, next, action) {
 -     if (typeof APP !== 'undefined') {
 -         // TODO Remove this logic when displaying of error messages on web is
 -         // handled through react/redux.
 -         const { error } = action;
 -         let title;
 -         let message;
 - 
 -         if (error === JitsiConferenceErrors.PASSWORD_NOT_SUPPORTED) {
 -             logger.warn('room passwords not supported');
 -             title = 'dialog.warning';
 -             message = 'dialog.passwordNotSupported';
 -         } else {
 -             logger.warn('setting password failed', error);
 -             title = 'dialog.lockTitle';
 -             message = 'dialog.lockMessage';
 -         }
 -         APP.UI.messageHandler.showError(title, message);
 -     }
 - 
 -     return next(action);
 - }
 
 
  |