diff --git a/client.js b/client.js index 459f02e..9dc6837 100644 --- a/client.js +++ b/client.js @@ -283,86 +283,104 @@ var isAuth = !!token && !!uName; if (headerRight) { + var defaultLoginLink = headerRight.querySelector('my-login-link, a[href*="/login"], .login-button'); var liveWidget = headerRight.querySelector('#yaknet-header-account-widget'); - if (!liveWidget) { - var widgetWrap = document.createElement('div'); - widgetWrap.id = 'yaknet-header-account-widget'; - widgetWrap.className = 'yaknet-header-widget'; - widgetWrap.style.display = 'inline-flex'; - widgetWrap.style.alignItems = 'center'; - widgetWrap.style.marginRight = '8px'; - widgetWrap.innerHTML = - '' + - ''; - - var targetSibling = - headerRight.querySelector('my-user-menu') || - headerRight.querySelector('my-login-link') || - headerRight.querySelector('.user-menu') || - headerRight.querySelector('.settings-button') || - headerRight.querySelector('my-user-notifications') || - headerRight.querySelector('my-notification-bell'); - - if (targetSibling && targetSibling.parentElement === headerRight) { - headerRight.insertBefore(widgetWrap, targetSibling); - } else { - headerRight.prepend(widgetWrap); - } - - var defaultLoginLink = headerRight.querySelector('my-login-link'); + if (isAuth) { + // Logged In: Show YakNet Profile Menu, Hide default login link if (defaultLoginLink) { - defaultLoginLink.setAttribute('aria-hidden', 'true'); - defaultLoginLink.setAttribute('tabindex', '-1'); defaultLoginLink.style.display = 'none'; + defaultLoginLink.setAttribute('aria-hidden', 'true'); } - } else { - // Sync widget attributes dynamically if auth state changed - var el = liveWidget.querySelector('yaknet-account'); - if (el) { - if (el.shadowRoot) { - var shadowLogoutBtn = - el.shadowRoot.getElementById('logoutBtn') || - el.shadowRoot.querySelector('.yn-logout-btn') || - el.shadowRoot.querySelector('button[title*="Çıkış"], button[aria-label*="Çıkış"]'); - if (shadowLogoutBtn && !shadowLogoutBtn.hasAttribute('data-yaktube-hooked')) { - shadowLogoutBtn.setAttribute('data-yaktube-hooked', 'true'); - shadowLogoutBtn.addEventListener( - 'click', - function (ev) { - ev.preventDefault(); - ev.stopPropagation(); - performUnifiedLogout(); - }, - true - ); + + if (!liveWidget) { + var widgetWrap = document.createElement('div'); + widgetWrap.id = 'yaknet-header-account-widget'; + widgetWrap.className = 'yaknet-header-widget'; + widgetWrap.style.display = 'inline-flex'; + widgetWrap.style.alignItems = 'center'; + widgetWrap.style.marginRight = '8px'; + + widgetWrap.innerHTML = + '' + + ''; + + var targetSibling = + headerRight.querySelector('my-user-menu') || + headerRight.querySelector('.user-menu') || + headerRight.querySelector('.settings-button') || + headerRight.querySelector('my-user-notifications') || + headerRight.querySelector('my-notification-bell'); + + if (targetSibling && targetSibling.parentElement === headerRight) { + headerRight.insertBefore(widgetWrap, targetSibling); + } else { + headerRight.prepend(widgetWrap); + } + } else { + var el = liveWidget.querySelector('yaknet-account'); + if (el) { + if (el.shadowRoot) { + var shadowLogoutBtn = + el.shadowRoot.getElementById('logoutBtn') || + el.shadowRoot.querySelector('.yn-logout-btn') || + el.shadowRoot.querySelector('button[title*="Çıkış"], button[aria-label*="Çıkış"]'); + if (shadowLogoutBtn && !shadowLogoutBtn.hasAttribute('data-yaktube-hooked')) { + shadowLogoutBtn.setAttribute('data-yaktube-hooked', 'true'); + shadowLogoutBtn.addEventListener( + 'click', + function (ev) { + ev.preventDefault(); + ev.stopPropagation(); + performUnifiedLogout(); + }, + true + ); + } + } + + if (el.getAttribute('authenticated') !== 'true' || el.getAttribute('user-name') !== displayName) { + el.setAttribute('authenticated', 'true'); + el.setAttribute('user-name', displayName); + el.setAttribute('user-email', emailStr); + if (typeof el.syncStateFromAttributes === 'function') { + el.syncStateFromAttributes(); + el.render(); + } } } + } + } else { + // Not Logged In: Remove YakNet widget to eliminate duplicate button, keep PeerTube native login button clean + if (liveWidget) { + liveWidget.remove(); + } + if (defaultLoginLink) { + defaultLoginLink.style.display = ''; + defaultLoginLink.removeAttribute('aria-hidden'); - var expectedAuth = isAuth ? 'true' : 'false'; - var expectedName = isAuth ? displayName : ''; - var expectedEmail = isAuth ? emailStr : ''; - if (el.getAttribute('authenticated') !== expectedAuth || el.getAttribute('user-name') !== expectedName) { - el.setAttribute('authenticated', expectedAuth); - el.setAttribute('user-name', expectedName); - el.setAttribute('user-email', expectedEmail); - if (typeof el.syncStateFromAttributes === 'function') { - el.syncStateFromAttributes(); - el.render(); + var loginAnchor = + defaultLoginLink.tagName.toLowerCase() === 'a' ? defaultLoginLink : defaultLoginLink.querySelector('a'); + if (loginAnchor) { + loginAnchor.setAttribute('aria-label', 'YakNet ile Giriş Yap'); + loginAnchor.setAttribute('title', 'YakNet Hesabınız ile Giriş Yapın'); + var spanText = loginAnchor.querySelector('span'); + if (spanText) { + spanText.textContent = 'YakNet ile Giriş Yap'; + } else { + loginAnchor.textContent = 'YakNet ile Giriş Yap'; } } } diff --git a/package.json b/package.json index 5a2e155..3c7a820 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "peertube-plugin-yaktube-ondemand", - "version": "1.4.3", + "version": "1.4.4", "description": "Accessible On-Demand YouTube Import, Live Streams, Smart Recommendations and A11y Engine for PeerTube", "main": "main.js", "library": "./main.js", @@ -44,4 +44,4 @@ "homepage": "https://yaktube.yakhub.com.tr", "bugs": "https://github.com/yakistir98/peertube-plugin-yaktube-ondemand/issues", "license": "AGPL-3.0-or-later" -} \ No newline at end of file +}