diff --git a/Extensions/combined/ryd.content-script.js b/Extensions/combined/ryd.content-script.js index 4676d45..6c5a301 100644 --- a/Extensions/combined/ryd.content-script.js +++ b/Extensions/combined/ryd.content-script.js @@ -36,8 +36,8 @@ async function setEventListeners (evt) { if (isShorts() || (getButtons()?.offsetParent && isVideoLoaded())) { clearInterval(jsInitChecktimer); jsInitChecktimer = null; - addLikeDislikeEventListener(); createSmartimationObserver(); + addLikeDislikeEventListener(); await setInitialState(); isSetInitialStateDone = true; getBrowser().storage.onChanged.addListener(storageChangeHandler); diff --git a/Extensions/combined/src/buttons.js b/Extensions/combined/src/buttons.js index d483b2a..0ff6375 100644 --- a/Extensions/combined/src/buttons.js +++ b/Extensions/combined/src/buttons.js @@ -44,13 +44,13 @@ function getDislikeButton() { return getButtons().children[0].tagName === 'YTD-SEGMENTED-LIKE-DISLIKE-BUTTON-RENDERER' ? querySelector(extConfig.selectors.buttons.dislikeButton.segmented) ?? querySelector(extConfig.selectors.buttons.dislikeButton.segmentedGetButtons, getButtons()) - : querySelector(extConfig.selectors.buttons.dislikeButton.notSegmented, getButtons()) + : isShorts() ? querySelector(['#dislike-button'], getButtons()) : querySelector(extConfig.selectors.buttons.dislikeButton.notSegmented, getButtons()) } function createDislikeTextContainer() { - const textNodeClone = (getLikeButton().querySelector("button > div[class*='cbox']") || (getLikeButton().querySelector('div > span[role="text"]') || document.querySelector('button > div.yt-spec-button-shape-next__button-text-content > span[role="text"]')).parentNode).cloneNode(true); - const insertPreChild = getDislikeButton().querySelector("yt-touch-feedback-shape"); - getDislikeButton().querySelector("button").insertBefore(textNodeClone, insertPreChild); + const textNodeClone = (getLikeButton().querySelector('.yt-spec-button-shape-next__button-text-content') || (getLikeButton().querySelector("button > div[class*='cbox']") || (getLikeButton().querySelector('div > span[role="text"]') || document.querySelector('button > div.yt-spec-button-shape-next__button-text-content > span[role="text"]')).parentNode)).cloneNode(true); + const insertPreChild = getDislikeButton().querySelector("button"); + insertPreChild.insertBefore(textNodeClone, null); getDislikeButton().querySelector("button").classList.remove("yt-spec-button-shape-next--icon-button"); getDislikeButton().querySelector("button").classList.add("yt-spec-button-shape-next--icon-leading"); if(textNodeClone.querySelector("span[role='text']") === null) { @@ -61,8 +61,8 @@ function createDislikeTextContainer() { } textNodeClone.appendChild(span); } - textNodeClone.querySelector("span[role='text']").innerText = ""; - return textNodeClone.querySelector("span[role='text']"); + textNodeClone.innerText = ""; + return textNodeClone; } function getDislikeTextContainer() { diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js index 2bae3af..4aa7991 100644 --- a/Extensions/combined/src/state.js +++ b/Extensions/combined/src/state.js @@ -17,6 +17,7 @@ import { createObserver } from './utils'; import { createStarRating } from "./starRating"; +import { dislikeClicked } from './events'; //TODO: Do not duplicate here and in ryd.background.js const apiUrl = "https://returnyoutubedislikeapi.com"; @@ -122,7 +123,7 @@ function isLikesDisabled() { getButtons().children[0].querySelector(".button-renderer-text").innerText ); } - return /^\D*$/.test(getButtons().children[0].innerText); + return /^\D*$/.test(getLikeTextContainer().innerText); } function isVideoLiked() { @@ -162,7 +163,6 @@ function setLikes(likesCount) { function setDislikes(dislikesCount) { cLog(`SET dislikes ${dislikesCount}`) getDislikeTextContainer()?.removeAttribute("is-empty"); - getDislikeTextContainer()?.removeAttribute('is-empty'); if (!isLikesDisabled()) { if (isMobile()) { getButtons().children[1].querySelector(