Переглянути джерело

Merge pull request #223 from cupiditys/main

update rating bar on input
Dmitrii Selivanov 3 роки тому
батько
коміт
b6324c27da

+ 57 - 4
Extensions/UserScript/Return Youtube Dislike.user.js

@@ -25,6 +25,9 @@
 const LIKED_STATE = "LIKED_STATE";
 const DISLIKED_STATE = "DISLIKED_STATE";
 const NEUTRAL_STATE = "NEUTRAL_STATE";
+var previousState = 3; //1=LIKED, 2=DISLIKED, 3=NEUTRAL
+var likesvalue = 0;
+var dislikesvalue = 0;
 
 var isMobile = (location.hostname == "m.youtube.com");
 var mobileDislikes = 0;
@@ -82,6 +85,17 @@ function isVideoNotDisliked() {
   return getDislikeButton().classList.contains("style-text");
 }
 
+function checkForSignInButton() {
+  if (isMobile) {
+    return;
+  }
+  if (document.querySelector('[aria-label="Sign in"]')) {
+    return true
+  } else {
+    return false
+  }
+}
+
 function getState() {
   if (isVideoLiked()) {
     return LIKED_STATE;
@@ -211,6 +225,8 @@ function setState() {
           if ("likes" in result && "dislikes" in result) {
             const formattedDislike = numberFormat(result.dislikes);
             setDislikes(formattedDislike);
+            likesvalue = result.likes
+            dislikesvalue = result.dislikes
             createRateBar(result.likes, result.dislikes);
             statsSet = true;
           }
@@ -228,6 +244,8 @@ function setState() {
           if ("likes" in result && "dislikes" in result) {
             const formattedDislike = numberFormat(result.dislikes);
             setDislikes(formattedDislike);
+            likesvalue = result.likes;
+            dislikesvalue = result.dislikes;
             createRateBar(result.likes, result.dislikes);
             statsSet = true;
           }
@@ -243,6 +261,8 @@ function setState() {
       if (json && !("traceId" in response) && !statsSet) {
         const { dislikes, likes } = json;
         cLog(`Received count: ${dislikes}`);
+        likesvalue = likes;
+        dislikesvalue = dislikes;
         setDislikes(numberFormat(dislikes));
         createRateBar(likes, dislikes);
       }
@@ -251,13 +271,46 @@ function setState() {
 }
 
 function likeClicked() {
-  cLog("Like clicked", getState());
-  setState();
+  if (checkForSignInButton() == false) {
+    if (previousState == 1) {
+      likesvalue--;
+      createRateBar(likesvalue, dislikesvalue);
+      setDislikes(numberFormat(dislikesvalue));
+      previousState = 3
+    } else if (previousState == 2) {
+      likesvalue++;
+      dislikesvalue--;
+      setDislikes(numberFormat(dislikesvalue))
+      createRateBar(likesvalue, dislikesvalue);
+      previousState = 1
+    } else if (previousState == 3) {
+      likesvalue++;
+      createRateBar(likesvalue, dislikesvalue)
+      previousState = 1
+    }
+  }
 }
 
 function dislikeClicked() {
-  cLog("Dislike clicked", getState());
-  setState();
+  if (checkForSignInButton() == false) {
+    if (previousState == 3) {
+      dislikesvalue++;
+      setDislikes(numberFormat(dislikesvalue));
+      createRateBar(likesvalue, dislikesvalue);
+      previousState = 2
+    } else if (previousState == 2) {
+      dislikesvalue--;
+      setDislikes(numberFormat(dislikesvalue));
+      createRateBar(likesvalue, dislikesvalue);
+      previousState = 3
+    } else if (previousState == 1) {
+      likesvalue--;
+      dislikesvalue++;
+      setDislikes(numberFormat(dislikesvalue));
+      createRateBar(likesvalue, dislikesvalue);
+      previousState = 2
+    }
+  }
 }
 
 function setInitialState() {

+ 45 - 20
Extensions/chrome/return-youtube-dislike.script.js

@@ -4,6 +4,7 @@ const NEUTRAL_STATE = "NEUTRAL_STATE";
 
 (function (extensionId) {
   let storedData = {
+    likes: 0,
     dislikes: 0,
     previousState: NEUTRAL_STATE
   };
@@ -55,6 +56,14 @@ const NEUTRAL_STATE = "NEUTRAL_STATE";
   function isVideoNotDisliked() {
     return getDislikeButton().classList.contains("style-text");
   }
+  
+  function checkForSignInButton() {
+    if (document.querySelector('[aria-label="Sign in"]')) {
+      return true
+    } else {
+      return false
+    }
+  }
 
   function getState() {
     if (isVideoLiked()) {
@@ -93,9 +102,10 @@ const NEUTRAL_STATE = "NEUTRAL_STATE";
               const formattedDislike = numberFormat(response.dislikes);
               setDislikes(formattedDislike);
               storedData.dislikes = parseInt(response.dislikes);
+              storedData.likes = parseInt(response.likes);
               createRateBar(response.likes, response.dislikes);
               statsSet = true;
-            }
+           }
           } catch (e) {
             statsSet = false;
           }
@@ -125,30 +135,45 @@ const NEUTRAL_STATE = "NEUTRAL_STATE";
   }
 
   function likeClicked() {
-    console.log(storedData.previousState)
-    if (storedData.previousState == DISLIKED_STATE) {
-      storedData.dislikes--;
-      setDislikes(numberFormat(storedData.dislikes));
-      storedData.previousState = LIKED_STATE;
+      if (checkForSignInButton() == false) {
+        if (storedData.previousState == DISLIKED_STATE) {
+          storedData.dislikes--;
+          storedData.likes++;
+          createRateBar(storedData.likes, storedData.dislikes);
+          setDislikes(numberFormat(storedData.dislikes));
+          storedData.previousState = LIKED_STATE;
+        } else if (storedData.previousState == NEUTRAL_STATE) {
+          storedData.likes++;
+          createRateBar(storedData.likes, storedData.dislikes);
+          storedData.previousState = LIKED_STATE;
+        } else if (storedData.previousState = LIKED_STATE) {
+          storedData.likes--;
+          createRateBar(storedData.likes, storedData.dislikes)
+          storedData.previousState = NEUTRAL_STATE;
+        }
     }
   }
 
   function dislikeClicked() {
-    let state = getState().current;
-
-    console.log("Dislike State:", getState());
-
-    if (state == DISLIKED_STATE) {
-      storedData.dislikes++;
-      setDislikes(numberFormat(storedData.dislikes));
-      storedData.previousState = DISLIKED_STATE;
-    } else if (state == NEUTRAL_STATE) {
-      storedData.dislikes--;
-      setDislikes(numberFormat(storedData.dislikes));
-      storedData.previousState = NEUTRAL_STATE;
+    if (checkForSignInButton() == false) {
+      if (storedData.previousState == NEUTRAL_STATE) {
+        storedData.dislikes++;
+        setDislikes(numberFormat(storedData.dislikes));
+        createRateBar(storedData.likes, storedData.dislikes);
+        storedData.previousState = DISLIKED_STATE;
+      } else if (storedData.previousState == DISLIKED_STATE) {
+        storedData.dislikes--;
+        setDislikes(numberFormat(storedData.dislikes));
+        createRateBar(storedData.likes, storedData.dislikes);
+        storedData.previousState = NEUTRAL_STATE;
+      } else if (storedData.previousState == LIKED_STATE) {
+        storedData.likes--;
+        storedData.dislikes++;
+        setDislikes(numberFormat(storedData.dislikes));
+        createRateBar(storedData.likes, storedData.dislikes);
+        storedData.previousState = DISLIKED_STATE;
+      }
     }
-
-    // setState();
   }
 
   function setInitialState() {

+ 44 - 15
Extensions/firefox/return-youtube-dislike.script.js

@@ -4,6 +4,7 @@ const NEUTRAL_STATE = "NEUTRAL_STATE";
 
 if (!storedData) {
   var storedData = {
+    likes: 0,
     dislikes: 0,
     previousState: NEUTRAL_STATE
   };
@@ -60,6 +61,14 @@ function isVideoNotDisliked() {
       || getDislikeButton().querySelector('[aria-pressed="false"]') !== null;
 }
 
+function checkForSignInButton() {
+  if (document.querySelector('[aria-label="Sign in"]')) {
+    return true
+  } else {
+    return false
+  }
+}
+
 function getState() {
   if (isVideoLiked()) {
     return { current: LIKED_STATE, previous: storedData.previousState };
@@ -94,6 +103,7 @@ function setState() {
             const formattedDislike = numberFormat(response.dislikes);
             setDislikes(formattedDislike);
             storedData.dislikes = parseInt(response.dislikes);
+            storedData.likes = parseInt(response.likes)
             createRateBar(response.likes, response.dislikes);
             statsSet = true;
           }
@@ -127,26 +137,45 @@ function setState() {
 }
 
 function likeClicked() {
-  if (storedData.previousState === 'disliked') {
-    storedData.dislikes--;
-    setDislikes(numberFormat(storedData.dislikes));
-    storedData.previousState = 'liked';
+  if (checkForSignInButton() == false) {
+    if (storedData.previousState == DISLIKED_STATE) {
+      storedData.dislikes--;
+      storedData.likes++;
+      createRateBar(storedData.likes, storedData.dislikes);
+      setDislikes(numberFormat(storedData.dislikes));
+      storedData.previousState = LIKED_STATE;
+    } else if (storedData.previousState == NEUTRAL_STATE) {
+      storedData.likes++;
+      createRateBar(storedData.likes, storedData.dislikes);
+      storedData.previousState = LIKED_STATE;
+    } else if (storedData.previousState = LIKED_STATE) {
+      storedData.likes--;
+      createRateBar(storedData.likes, storedData.dislikes)
+      storedData.previousState = NEUTRAL_STATE;
+    }
   }
 }
 
 function dislikeClicked() {
-  let state = getState().current;
-  if (state == DISLIKED_STATE) {
-    storedData.dislikes++;
-    setDislikes(numberFormat(storedData.dislikes));
-    storedData.previousState = DISLIKED_STATE;
-  } else if (state == NEUTRAL_STATE) {
-    storedData.dislikes--;
-    setDislikes(numberFormat(storedData.dislikes));
-    storedData.previousState = NEUTRAL_STATE;
+  if (checkForSignInButton() == false) {
+    if (storedData.previousState == NEUTRAL_STATE) {
+      storedData.dislikes++;
+      setDislikes(numberFormat(storedData.dislikes));
+      createRateBar(storedData.likes, storedData.dislikes);
+      storedData.previousState = DISLIKED_STATE;
+    } else if (storedData.previousState == DISLIKED_STATE) {
+      storedData.dislikes--;
+      setDislikes(numberFormat(storedData.dislikes));
+      createRateBar(storedData.likes, storedData.dislikes);
+      storedData.previousState = NEUTRAL_STATE;
+    } else if (storedData.previousState == LIKED_STATE) {
+      storedData.likes--;
+      storedData.dislikes++;
+      setDislikes(numberFormat(storedData.dislikes));
+      createRateBar(storedData.likes, storedData.dislikes);
+      storedData.previousState = DISLIKED_STATE;
+    }
   }
-
-  // setState();
 }
 
 function setInitialState() {