From 87e922d41fb2e801df97d6441de330b9512b639d Mon Sep 17 00:00:00 2001 From: hyperstown Date: Tue, 18 Oct 2022 00:39:21 +0200 Subject: fix like reformat option to work with new design --- .../UserScript/Return Youtube Dislike.user.js | 27 ++++++++++++++-------- Extensions/combined/src/buttons.js | 5 ++-- Extensions/combined/src/state.js | 14 +++++++---- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index 4dd048c..f3062fa 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -100,7 +100,8 @@ function getLikeButton() { function getLikeTextContainer() { return ( getLikeButton().querySelector("#text") ?? - getLikeButton().getElementsByTagName("yt-formatted-string")[0] + getLikeButton().getElementsByTagName("yt-formatted-string")[0] ?? + getLikeButton().querySelector("span[role='text']") ); } @@ -227,16 +228,24 @@ function setDislikes(dislikesCount) { } function getLikeCountFromButton() { - if (isShorts()) { - //Youtube Shorts don't work with this query. It's not nessecary; we can skip it and still see the results. - //It should be possible to fix this function, but it's not critical to showing the dislike count. + try { + if (isShorts()) { + //Youtube Shorts don't work with this query. It's not necessary; we can skip it and still see the results. + //It should be possible to fix this function, but it's not critical to showing the dislike count. + return false; + } + let likeButton = getLikeButton() + .querySelector("yt-formatted-string#text") ?? + getLikeButton().querySelector("button"); + + let likesStr = likeButton.getAttribute("aria-label") + .replace(/\D/g, ""); + return likesStr.length > 0 ? parseInt(likesStr) : false; + } + catch { return false; } - let likesStr = getLikeButton() - .querySelector("yt-formatted-string#text") - .getAttribute("aria-label") - .replace(/\D/g, ""); - return likesStr.length > 0 ? parseInt(likesStr) : false; + } (typeof GM_addStyle != "undefined" diff --git a/Extensions/combined/src/buttons.js b/Extensions/combined/src/buttons.js index ab413a6..b78670c 100644 --- a/Extensions/combined/src/buttons.js +++ b/Extensions/combined/src/buttons.js @@ -24,7 +24,7 @@ function getButtons() { //--- If Menu Element Is Displayed: ---// if (document.getElementById("menu-container")?.offsetParent === null) { return document.querySelector("ytd-menu-renderer.ytd-watch-metadata > div"); - //--- If Menu Element Isnt Displayed: ---// + //--- If Menu Element Isn't Displayed: ---// } else { return document .getElementById("menu-container") @@ -42,7 +42,8 @@ function getLikeButton() { function getLikeTextContainer() { return ( getLikeButton().querySelector("#text") ?? - getLikeButton().getElementsByTagName("yt-formatted-string")[0] + getLikeButton().getElementsByTagName("yt-formatted-string")[0] ?? + getLikeButton().querySelector("span[role='text']") ); } diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js index 0876e10..444a203 100644 --- a/Extensions/combined/src/state.js +++ b/Extensions/combined/src/state.js @@ -133,10 +133,12 @@ function getState(storedData) { //--- Sets The Likes And Dislikes Values ---// function setLikes(likesCount) { + cLog(`SET likes ${likesCount}`) getLikeTextContainer().innerText = likesCount; } function setDislikes(dislikesCount) { + cLog(`SET dislikes ${dislikesCount}`) getDislikeTextContainer()?.removeAttribute('is-empty'); if (!isLikesDisabled()) { if (isMobile()) { @@ -161,13 +163,15 @@ function setDislikes(dislikesCount) { function getLikeCountFromButton() { try { if (isShorts()) { - //Youtube Shorts don't work with this query. It's not nessecary; we can skip it and still see the results. + //Youtube Shorts don't work with this query. It's not necessary; we can skip it and still see the results. //It should be possible to fix this function, but it's not critical to showing the dislike count. return false; } - let likesStr = getLikeButton() - .querySelector("yt-formatted-string#text") - .getAttribute("aria-label") + let likeButton = getLikeButton() + .querySelector("yt-formatted-string#text") ?? + getLikeButton().querySelector("button"); + + let likesStr = likeButton.getAttribute("aria-label") .replace(/\D/g, ""); return likesStr.length > 0 ? parseInt(likesStr) : false; } @@ -191,7 +195,7 @@ function processResponse(response, storedData) { createRateBar(storedData.likes, storedData.dislikes); if (extConfig.coloredThumbs === true) { if (isShorts()) { - // for shorts, leave deactived buttons in default color + // for shorts, leave deactivated buttons in default color let shortLikeButton = getLikeButton().querySelector( "tp-yt-paper-button#button" ); -- cgit v1.2.3