2017-06-29 03:35:43 +00:00
|
|
|
import UIEvents from '../../../../service/UI/UIEvents';
|
|
|
|
|
2016-10-05 14:36:59 +00:00
|
|
|
import {
|
|
|
|
CONFERENCE_JOINED,
|
|
|
|
CONFERENCE_LEFT
|
|
|
|
} from '../conference';
|
|
|
|
import { MiddlewareRegistry } from '../redux';
|
|
|
|
|
|
|
|
import { localParticipantIdChanged } from './actions';
|
2017-08-14 15:02:58 +00:00
|
|
|
import {
|
|
|
|
KICK_PARTICIPANT,
|
|
|
|
MUTE_REMOTE_PARTICIPANT,
|
|
|
|
PARTICIPANT_DISPLAY_NAME_CHANGED
|
|
|
|
} from './actionTypes';
|
2016-10-05 14:36:59 +00:00
|
|
|
import { LOCAL_PARTICIPANT_DEFAULT_ID } from './constants';
|
2017-06-29 03:35:43 +00:00
|
|
|
import { getLocalParticipant } from './functions';
|
|
|
|
|
|
|
|
declare var APP: Object;
|
2016-10-05 14:36:59 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Middleware that captures CONFERENCE_JOINED and CONFERENCE_LEFT actions and
|
|
|
|
* updates respectively ID of local participant.
|
|
|
|
*
|
|
|
|
* @param {Store} store - Redux store.
|
|
|
|
* @returns {Function}
|
|
|
|
*/
|
|
|
|
MiddlewareRegistry.register(store => next => action => {
|
|
|
|
switch (action.type) {
|
|
|
|
case CONFERENCE_JOINED:
|
2016-12-12 00:29:13 +00:00
|
|
|
store.dispatch(localParticipantIdChanged(action.conference.myUserId()));
|
2016-10-05 14:36:59 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case CONFERENCE_LEFT:
|
|
|
|
store.dispatch(localParticipantIdChanged(LOCAL_PARTICIPANT_DEFAULT_ID));
|
|
|
|
break;
|
2017-06-29 03:35:43 +00:00
|
|
|
|
2017-08-14 15:02:58 +00:00
|
|
|
case KICK_PARTICIPANT:
|
|
|
|
if (typeof APP !== 'undefined') {
|
|
|
|
APP.UI.emitEvent(UIEvents.USER_KICKED, action.id);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case MUTE_REMOTE_PARTICIPANT:
|
|
|
|
if (typeof APP !== 'undefined') {
|
|
|
|
APP.UI.messageHandler.openTwoButtonDialog({
|
|
|
|
titleKey: 'dialog.muteParticipantTitle',
|
|
|
|
msgString:
|
|
|
|
'<div data-i18n="dialog.muteParticipantBody"></div>',
|
|
|
|
leftButtonKey: 'dialog.muteParticipantButton',
|
|
|
|
dontShowAgain: {
|
|
|
|
id: 'dontShowMuteParticipantDialog',
|
|
|
|
textKey: 'dialog.doNotShowMessageAgain',
|
|
|
|
checked: true,
|
|
|
|
buttonValues: [ true ]
|
|
|
|
},
|
|
|
|
submitFunction: () => {
|
|
|
|
APP.UI.emitEvent(UIEvents.REMOTE_AUDIO_MUTED, action.id);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
2017-06-29 03:35:43 +00:00
|
|
|
// TODO Remove this middleware when the local display name update flow is
|
|
|
|
// fully brought into redux.
|
|
|
|
case PARTICIPANT_DISPLAY_NAME_CHANGED: {
|
|
|
|
if (typeof APP !== 'undefined') {
|
|
|
|
const participant = getLocalParticipant(store.getState());
|
|
|
|
|
|
|
|
if (participant && participant.id === action.id) {
|
|
|
|
APP.UI.emitEvent(UIEvents.NICKNAME_CHANGED, action.name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
2016-10-05 14:36:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return next(action);
|
|
|
|
});
|