ryd.content-script.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {
  2. getButtons,
  3. getLikeButton,
  4. getDislikeButton,
  5. checkForSignInButton,
  6. } from "./src/buttons";
  7. import {
  8. isMobile,
  9. isVideoDisliked,
  10. isVideoLiked,
  11. getState,
  12. setState,
  13. setInitialState,
  14. setLikes,
  15. setDislikes,
  16. getLikeCountFromButton,
  17. LIKED_STATE,
  18. DISLIKED_STATE,
  19. NEUTRAL_STATE,
  20. } from "./src/state";
  21. import { numberFormat, getBrowser, getVideoId, isVideoLoaded, cLog } from "./src/utils";
  22. import { createRateBar } from "./src/bar";
  23. import { sendVideoIds, sendVote, likeClicked, dislikeClicked } from "./src/events"
  24. let storedData = {
  25. likes: 0,
  26. dislikes: 0,
  27. previousState: NEUTRAL_STATE,
  28. };
  29. let jsInitChecktimer = null;
  30. function setEventListeners(evt) {
  31. function checkForJS_Finish() {
  32. if (getButtons()?.offsetParent && isVideoLoaded()) {
  33. clearInterval(jsInitChecktimer);
  34. jsInitChecktimer = null;
  35. const buttons = getButtons();
  36. if (!window.returnDislikeButtonlistenersSet) {
  37. buttons.children[0].addEventListener("click", () => likeClicked(storedData));
  38. buttons.children[1].addEventListener("click", () => dislikeClicked(storedData));
  39. window.returnDislikeButtonlistenersSet = true;
  40. }
  41. setInitialState(storedData);
  42. }
  43. }
  44. if (window.location.href.indexOf("watch?") >= 0) {
  45. jsInitChecktimer = setInterval(checkForJS_Finish, 111);
  46. }
  47. }
  48. setEventListeners();
  49. document.addEventListener("yt-navigate-finish", function (event) {
  50. if (jsInitChecktimer !== null) clearInterval(jsInitChecktimer);
  51. window.returnDislikeButtonlistenersSet = false;
  52. setEventListeners();
  53. });
  54. setTimeout(() => sendVideoIds(), 2500);