{
{ t('info.dialANumber') }
- { `${t('info.dialInConferenceID')} ${conferenceID}` }
+ { `${t('info.dialInConferenceID')} ${_formatConferenceIDPin(conferenceID)}` }
);
diff --git a/react/features/invite/components/info-dialog/web/DialInNumber.js b/react/features/invite/components/info-dialog/web/DialInNumber.js
index f8dc205c2..f76f9fb88 100644
--- a/react/features/invite/components/info-dialog/web/DialInNumber.js
+++ b/react/features/invite/components/info-dialog/web/DialInNumber.js
@@ -4,6 +4,8 @@ import React, { Component } from 'react';
import { translate } from '../../../../base/i18n';
+import { _formatConferenceIDPin } from '../../../_utils';
+
/**
* The type of the React {@code Component} props of {@link DialInNumber}.
*/
@@ -61,7 +63,7 @@ class DialInNumber extends Component {
- { `${conferenceID}#` }
+ { `${_formatConferenceIDPin(conferenceID)}#` }
diff --git a/react/features/room-lock/middleware.js b/react/features/room-lock/middleware.js
index 345c073b4..34cb36827 100644
--- a/react/features/room-lock/middleware.js
+++ b/react/features/room-lock/middleware.js
@@ -8,10 +8,15 @@ import {
import { hideDialog } from '../base/dialog';
import { JitsiConferenceErrors } from '../base/lib-jitsi-meet';
import { MiddlewareRegistry } from '../base/redux';
+import {
+ NOTIFICATION_TIMEOUT,
+ showNotification
+} from '../notifications';
import UIEvents from '../../../service/UI/UIEvents';
import { _openPasswordRequiredPrompt } from './actions';
import { PasswordRequiredPrompt, RoomLockPrompt } from './components';
+import { LOCKED_REMOTELY } from './constants';
declare var APP: Object;
@@ -29,14 +34,33 @@ MiddlewareRegistry.register(store => next => action => {
case CONFERENCE_FAILED:
return _conferenceFailed(store, next, action);
- case LOCK_STATE_CHANGED:
+ 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;
+ const previousLockedState = store.getState()['features/base/conference'].locked;
+
+ const result = next(action);
+
+ const currentLockedState = store.getState()['features/base/conference'].locked;
+
+ if (currentLockedState === LOCKED_REMOTELY) {
+ store.dispatch(
+ showNotification({
+ titleKey: 'notify.passwordSetRemotely'
+ }, NOTIFICATION_TIMEOUT));
+ } else if (previousLockedState === LOCKED_REMOTELY && !currentLockedState) {
+ store.dispatch(
+ showNotification({
+ titleKey: 'notify.passwordRemovedRemotely'
+ }, NOTIFICATION_TIMEOUT));
+ }
+
+ return result;
+ }
case SET_PASSWORD_FAILED:
return _setPasswordFailed(store, next, action);
}