| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
							- /* global APP, JitsiMeetJS */
 - import RequirePasswordDialog from './RequirePasswordDialog';
 - 
 - /**
 -  * Show notification that user cannot set password for the conference
 -  * because server doesn't support that.
 -  */
 - function notifyPasswordNotSupported () {
 -     console.warn('room passwords not supported');
 -     APP.UI.messageHandler.showError(
 -         "dialog.warning", "dialog.passwordNotSupported");
 - }
 - 
 - /**
 -  * Show notification that setting password for the conference failed.
 -  * @param {Error} err error
 -  */
 - function notifyPasswordFailed(err) {
 -     console.warn('setting password failed', err);
 -     APP.UI.messageHandler.showError(
 -         "dialog.lockTitle", "dialog.lockMessage");
 - }
 - 
 - const ConferenceErrors = JitsiMeetJS.errors.conference;
 - 
 - /**
 -  * Create new RoomLocker for the conference.
 -  * It allows to set or remove password for the conference,
 -  * or ask for required password.
 -  * @returns {RoomLocker}
 -  */
 - export default function createRoomLocker (room) {
 -     let password;
 -     let requirePasswordDialog = new RequirePasswordDialog();
 -     /**
 -      * If the room was locked from someone other than us, we indicate it with
 -      * this property in order to have correct roomLocker state of isLocked.
 -      * @type {boolean} whether room is locked, but not from us.
 -      */
 -     let lockedElsewhere = false;
 - 
 -     /**
 -      * @class RoomLocker
 -      */
 -     return {
 -         get isLocked () {
 -             return !!password || lockedElsewhere;
 -         },
 - 
 -         get password () {
 -             return password;
 -         },
 - 
 -         /**
 -          * Allows to set new password
 -          * @param newPass
 -          * @returns {Promise.<TResult>}
 -          */
 -         lock (newPass) {
 -             return room.lock(newPass).then(() => {
 -                 password = newPass;
 -                 // If the password is undefined this means that we're removing
 -                 // it for everyone.
 -                 if (!password)
 -                     lockedElsewhere = false;
 -             }).catch(function (err) {
 -                 console.error(err);
 -                 if (err === ConferenceErrors.PASSWORD_NOT_SUPPORTED) {
 -                     notifyPasswordNotSupported();
 -                 } else {
 -                     notifyPasswordFailed(err);
 -                 }
 -                 throw err;
 -             });
 -         },
 - 
 -         /**
 -          * Sets that the room is locked from another user, not us.
 -          * @param {boolean} value locked/unlocked state
 -          */
 -         set lockedElsewhere (value) {
 -             lockedElsewhere = value;
 -         },
 - 
 -         /**
 -          * Whether room is locked from someone else.
 -          * @returns {boolean} whether room is not locked locally,
 -          * but it is still locked.
 -          */
 -         get lockedElsewhere () {
 -             return lockedElsewhere;
 -         },
 - 
 -         /**
 -          * Reset the password. Can be useful when room
 -          * has been unlocked from elsewhere and we can use
 -          * this method for sync the pass
 -          */
 -         resetPassword() {
 -             password = null;
 -         },
 - 
 -         /**
 -          * Asks user for required conference password.
 -          */
 -         requirePassword () {
 -             return requirePasswordDialog.askForPassword().then(
 -                 newPass => { password = newPass; }
 -             ).catch(
 -                 reason => {
 -                     // user canceled, no pass was entered.
 -                     // clear, as if we use the same instance several times
 -                     // pass stays between attempts
 -                     password = null;
 -                     if (reason !== APP.UI.messageHandler.CANCEL)
 -                         console.error(reason);
 -                 }
 -             );
 -         },
 - 
 -         /**
 -          * Hides require password dialog
 -          */
 -         hideRequirePasswordDialog() {
 -             if (requirePasswordDialog.isOpened) {
 -                 requirePasswordDialog.close();
 -             }
 -         }
 -     };
 - }
 
 
  |