(function () { var hasAccess = false; function getAuthToken() { try { var creds = JSON.parse(localStorage.getItem('jellyfin_credentials')); var server = creds && creds.Servers && creds.Servers[0]; return (server && server.AccessToken) || null; } catch (e) { return null; } } function checkAccess() { var token = getAuthToken(); if (!token) { return Promise.resolve(false); } return fetch('/JellyLms/RemoteControl/Access', { headers: { 'X-Emby-Token': token } }) .then(function (resp) { return resp.ok; }) .catch(function () { return false; }); } function addButton(headerRight) { if (headerRight.querySelector('.headerLmsRemoteButton')) { return; } var btn = document.createElement('button'); btn.setAttribute('is', 'paper-icon-button-light'); btn.setAttribute('type', 'button'); btn.className = 'headerLmsRemoteButton headerButton headerButtonRight paper-icon-button-light'; btn.title = 'Multi-room Remote'; btn.innerHTML = ''; btn.addEventListener('click', function () { window.location.href = '/JellyLms/RemoteControl'; }); var castButton = headerRight.querySelector('.headerCastButton'); if (castButton) { headerRight.insertBefore(btn, castButton); } else { headerRight.appendChild(btn); } } function tryInject() { if (!hasAccess) { return; } var headerRight = document.querySelector('.headerRight'); if (headerRight) { addButton(headerRight); } } function init() { checkAccess().then(function (ok) { hasAccess = ok; if (!ok) { return; } tryInject(); var observer = new MutationObserver(tryInject); observer.observe(document.body, { childList: true, subtree: true }); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();