Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Anarios/return-youtube-dislike.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Extensions/UserScript/Return Youtube Dislike.user.js47
-rw-r--r--Extensions/combined/src/state.js47
2 files changed, 90 insertions, 4 deletions
diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js
index af4b3c5..8ee7dcf 100644
--- a/Extensions/UserScript/Return Youtube Dislike.user.js
+++ b/Extensions/UserScript/Return Youtube Dislike.user.js
@@ -96,6 +96,36 @@ function getDislikeButton() {
return getButtons().children[1];
}
+let mutationObserver = new Object();
+
+if (isShorts() && mutationObserver.exists !== true) {
+ cLog('initializing mutation observer')
+ mutationObserver.options = {
+ childList: false,
+ attributes: true,
+ subtree: false
+ };
+ mutationObserver.exists = true;
+ mutationObserver.observer = new MutationObserver( function(mutationList, observer) {
+ mutationList.forEach( (mutation) => {
+ if (mutation.type === 'attributes' &&
+ mutation.target.nodeName === 'TP-YT-PAPER-BUTTON' &&
+ mutation.target.id === 'button') {
+ cLog('Short thumb button status changed');
+ if (mutation.target.getAttribute('aria-pressed') === 'true') {
+ mutation.target.style.color =
+ (mutation.target.parentElement.parentElement.id === 'like-button') ?
+ getColorFromTheme(true) : getColorFromTheme(false);
+ } else {
+ mutation.target.style.color = 'unset';
+ }
+ return;
+ }
+ cLog('unexpected mutation observer event: ' + mutation.target + mutation.type);
+ });
+ });
+}
+
function isVideoLiked() {
if (isMobile) {
return (
@@ -283,8 +313,21 @@ function setState() {
setDislikes(numberFormat(dislikes));
createRateBar(likes, dislikes);
if (extConfig.coloredThumbs === true) {
- getLikeButton().style.color = getColorFromTheme(true);
- getDislikeButton().style.color = getColorFromTheme(false);
+ if (isShorts()) { // for shorts, leave deactived buttons in default color
+ let shortLikeButton = getLikeButton().querySelector('tp-yt-paper-button#button');
+ let shortDislikeButton = getDislikeButton().querySelector('tp-yt-paper-button#button');
+ if (shortLikeButton.getAttribute('aria-pressed') === 'true') {
+ shortLikeButton.style.color = getColorFromTheme(true);
+ }
+ if (shortDislikeButton.getAttribute('aria-pressed') === 'true') {
+ shortDislikeButton.style.color = getColorFromTheme(false);
+ }
+ mutationObserver.observer.observe(shortLikeButton, mutationObserver.options);
+ mutationObserver.observer.observe(shortDislikeButton, mutationObserver.options);
+ } else {
+ getLikeButton().style.color = getColorFromTheme(true);
+ getDislikeButton().style.color = getColorFromTheme(false);
+ }
}
}
});
diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js
index 4ca7d35..1ec2af5 100644
--- a/Extensions/combined/src/state.js
+++ b/Extensions/combined/src/state.js
@@ -39,6 +39,36 @@ function isShorts() {
return location.pathname.startsWith("/shorts");
}
+
+let mutationObserver = new Object();
+
+if (isShorts() && mutationObserver.exists !== true) {
+ cLog('initializing mutation observer')
+ mutationObserver.options = {
+ childList: false,
+ attributes: true,
+ subtree: false
+ };
+ mutationObserver.exists = true;
+ mutationObserver.observer = new MutationObserver( function(mutationList, observer) {
+ mutationList.forEach( (mutation) => {
+ if (mutation.type === 'attributes' &&
+ mutation.target.nodeName === 'TP-YT-PAPER-BUTTON' &&
+ mutation.target.id === 'button') {
+ // cLog('Short thumb button status changed');
+ if (mutation.target.getAttribute('aria-pressed') === 'true') {
+ mutation.target.style.color =
+ (mutation.target.parentElement.parentElement.id === 'like-button') ?
+ getColorFromTheme(true) : getColorFromTheme(false);
+ } else {
+ mutation.target.style.color = 'unset';
+ }
+ return;
+ }
+ cLog('unexpected mutation observer event: ' + mutation.target + mutation.type);
+ });
+ });
+
function isLikesDisabled() {
// return true if the like button's text doesn't contain any number
if (isMobile()) {
@@ -127,8 +157,21 @@ function processResponse(response, storedData) {
storedData.likes = getLikeCountFromButton() || parseInt(response.likes);
createRateBar(storedData.likes, storedData.dislikes);
if (extConfig.coloredThumbs === true) {
- getLikeButton().style.color = getColorFromTheme(true);
- getDislikeButton().style.color = getColorFromTheme(false);
+ if (isShorts()) { // for shorts, leave deactived buttons in default color
+ let shortLikeButton = getLikeButton().querySelector('tp-yt-paper-button#button');
+ let shortDislikeButton = getDislikeButton().querySelector('tp-yt-paper-button#button');
+ if (shortLikeButton.getAttribute('aria-pressed') === 'true') {
+ shortLikeButton.style.color = getColorFromTheme(true);
+ }
+ if (shortDislikeButton.getAttribute('aria-pressed') === 'true') {
+ shortDislikeButton.style.color = getColorFromTheme(false);
+ }
+ mutationObserver.observer.observe(shortLikeButton, mutationObserver.options);
+ mutationObserver.observer.observe(shortDislikeButton, mutationObserver.options);
+ } else {
+ getLikeButton().style.color = getColorFromTheme(true);
+ getDislikeButton().style.color = getColorFromTheme(false);
+ }
}
}