/* global $, APP */ import UIUtil from '../../util/UIUtil'; import UIEvents from '../../../../service/UI/UIEvents'; import Settings from '../../../settings/Settings'; import { createProfilePanelButtonEvent, sendAnalytics } from '../../../../react/features/analytics'; const sidePanelsContainerId = 'sideToolbarContainer'; const htmlStr = `

`; /** * */ function initHTML() { $(`#${sidePanelsContainerId}`) .append(htmlStr); // make sure we translate the panel, as adding it can be after i18n // library had initialized and translated already present html APP.translation.translateElement($(`#${sidePanelsContainerId}`)); } export default { init(emitter) { initHTML(); /** * Updates display name. * * @returns {void} */ function updateDisplayName() { emitter.emit(UIEvents.NICKNAME_CHANGED, $('#setDisplayName').val()); } $('#setDisplayName') .val(Settings.getDisplayName()) .keyup(event => { if (event.keyCode === 13) { // enter updateDisplayName(); } }) .focusout(updateDisplayName); /** * Updates the email. * * @returns {void} */ function updateEmail() { emitter.emit(UIEvents.EMAIL_CHANGED, $('#setEmail').val()); } $('#setEmail') .val(Settings.getEmail()) .keyup(event => { if (event.keyCode === 13) { // enter updateEmail(); } }) .focusout(updateEmail); /** * */ function loginClicked() { sendAnalytics(createProfilePanelButtonEvent('login.button')); emitter.emit(UIEvents.AUTH_CLICKED); } $('#profile_button_login').click(loginClicked); /** * */ function logoutClicked() { const titleKey = 'dialog.logoutTitle'; const msgKey = 'dialog.logoutQuestion'; sendAnalytics(createProfilePanelButtonEvent('logout.button')); // Ask for confirmation APP.UI.messageHandler.openTwoButtonDialog({ titleKey, msgKey, leftButtonKey: 'dialog.Yes', submitFunction(evt, yes) { if (yes) { emitter.emit(UIEvents.LOGOUT); } } }); } $('#profile_button_logout').click(logoutClicked); }, /** * Check if settings menu is visible or not. * @returns {boolean} */ isVisible() { return UIUtil.isVisible(document.getElementById('profile_container')); }, /** * Change user display name in the settings menu. * @param {string} newDisplayName */ changeDisplayName(newDisplayName) { $('#setDisplayName').val(newDisplayName); }, /** * Change the value of the field for the user email. * @param {string} email the new value that will be displayed in the field. */ changeEmail(email) { $('#setEmail').val(email); }, /** * Shows or hides authentication related buttons * @param {boolean} show true to show or false to hide */ showAuthenticationButtons(show) { const id = 'profile_auth_container'; UIUtil.setVisible(id, show); }, /** * Shows/hides login button. * @param {boolean} show true to show or false to hide */ showLoginButton(show) { const id = 'profile_button_login'; UIUtil.setVisible(id, show); }, /** * Shows/hides logout button. * @param {boolean} show true to show or false to hide */ showLogoutButton(show) { const id = 'profile_button_logout'; UIUtil.setVisible(id, show); }, /** * Displays user's authenticated identity name (login). * @param {string} authIdentity identity name to be displayed. */ setAuthenticatedIdentity(authIdentity) { const id = 'profile_auth_identity'; UIUtil.setVisible(id, Boolean(authIdentity)); $(`#${id}`).text(authIdentity ? authIdentity : ''); } };