1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update header user button

This commit is contained in:
Luke Pulverenti 2016-03-14 14:05:45 -04:00
parent ea6332ed7d
commit 7e84d5786e

View file

@ -33,7 +33,7 @@
html += '<paper-button class="headerButton headerButtonRight btnNotifications subdued" type="button" title="Notifications"><div class="btnNotificationsInner">0</div></paper-button>';
html += '<paper-icon-button icon="person" class="headerButton headerButtonRight headerUserButton" onclick="return Dashboard.showUserFlyout(this);"></paper-icon-button>';
html += '<paper-icon-button icon="person" class="headerButton headerButtonRight headerUserButton"></paper-icon-button>';
if (!browserInfo.mobile && !Dashboard.isConnectMode()) {
html += '<paper-icon-button icon="settings" class="headerButton headerButtonRight dashboardEntryHeaderButton" onclick="return LibraryMenu.onSettingsClicked(event);"></paper-icon-button>';
@ -83,25 +83,15 @@
}
if (headerUserButton) {
headerUserButton.src = url;
headerUserButton.icon = null;
headerUserButton.classList.add('headerUserButtonRound');
updateHeaderUserButton(headerUserButton, url, null);
hasImage = true;
}
}
}
if (headerUserButton && !hasImage) {
headerUserButton.icon = 'person';
headerUserButton.src = null;
headerUserButton.removeAttribute('src');
headerUserButton.classList.remove('headerUserButtonRound');
// Looks like a bug in paper-icon-button that this doesn't get removed
var headerUserButtonImg = headerUserButton.querySelector('img');
if (headerUserButtonImg) {
headerUserButtonImg.parentNode.removeChild(headerUserButtonImg);
}
updateHeaderUserButton(headerUserButton, null, 'person');
}
if (user) {
updateLocalUser(user.localUser);
@ -110,6 +100,30 @@
requiresUserRefresh = false;
}
function updateHeaderUserButton(headerUserButton, src, icon) {
var oldButton = headerUserButton;
// There seems to be a bug in paper-icon-button where it doesn't refresh it's display after switching between icon and src image
// So work around that by just replacing the element altogether
var headerUserButton = document.createElement('paper-icon-button');
headerUserButton.className = oldButton.className;
headerUserButton.addEventListener('click', onHeaderUserButtonClick);
if (src) {
headerUserButton.classList.add('headerUserButtonRound');
headerUserButton.src = src;
} else if (icon) {
headerUserButton.classList.remove('headerUserButtonRound');
header.icon = icon;
} else {
headerUserButton.classList.remove('headerUserButtonRound');
}
oldButton.parentNode.replaceChild(headerUserButton, oldButton);
}
function updateLocalUser(user) {
var header = document.querySelector('.viewMenuBar');
@ -162,6 +176,10 @@
});
}
function onHeaderUserButtonClick(e) {
Dashboard.showUserFlyout(e.target);
}
function bindMenuEvents() {
var mainDrawerButton = document.querySelector('.mainDrawerButton');
@ -180,6 +198,11 @@
headerVoiceButton.addEventListener('click', showVoice);
}
var headerUserButton = document.querySelector('.headerUserButton');
if (headerUserButton) {
headerUserButton.addEventListener('click', onHeaderUserButtonClick);
}
var viewMenuBar = document.querySelector(".viewMenuBar");
initHeadRoom(viewMenuBar);