events.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import { getBrowser, getVideoId, numberFormat, cLog } from "./utils";
  2. import { checkForSignInButton, getButtons } from "./buttons";
  3. import {
  4. NEUTRAL_STATE,
  5. LIKED_STATE,
  6. DISLIKED_STATE,
  7. setDislikes,
  8. extConfig,
  9. storedData,
  10. setLikes,
  11. } from "./state";
  12. import { createRateBar } from "./bar";
  13. function sendVote(vote) {
  14. if (extConfig.disableVoteSubmission !== true) {
  15. getBrowser().runtime.sendMessage({
  16. message: "send_vote",
  17. vote: vote,
  18. videoId: getVideoId(window.location.href),
  19. });
  20. }
  21. }
  22. function likeClicked() {
  23. if (checkForSignInButton() === false) {
  24. if (storedData.previousState === DISLIKED_STATE) {
  25. sendVote(1);
  26. if (storedData.dislikes > 0) storedData.dislikes--;
  27. storedData.likes++;
  28. createRateBar(storedData.likes, storedData.dislikes);
  29. setDislikes(numberFormat(storedData.dislikes));
  30. storedData.previousState = LIKED_STATE;
  31. } else if (storedData.previousState === NEUTRAL_STATE) {
  32. sendVote(1);
  33. storedData.likes++;
  34. createRateBar(storedData.likes, storedData.dislikes);
  35. storedData.previousState = LIKED_STATE;
  36. } else if ((storedData.previousState = LIKED_STATE)) {
  37. sendVote(0);
  38. if (storedData.likes > 0) storedData.likes--;
  39. createRateBar(storedData.likes, storedData.dislikes);
  40. storedData.previousState = NEUTRAL_STATE;
  41. }
  42. }
  43. }
  44. function dislikeClicked() {
  45. if (checkForSignInButton() == false) {
  46. if (storedData.previousState === NEUTRAL_STATE) {
  47. sendVote(-1);
  48. storedData.dislikes++;
  49. setDislikes(numberFormat(storedData.dislikes));
  50. createRateBar(storedData.likes, storedData.dislikes);
  51. storedData.previousState = DISLIKED_STATE;
  52. } else if (storedData.previousState === DISLIKED_STATE) {
  53. sendVote(0);
  54. if (storedData.dislikes > 0) storedData.dislikes--;
  55. setDislikes(numberFormat(storedData.dislikes));
  56. createRateBar(storedData.likes, storedData.dislikes);
  57. storedData.previousState = NEUTRAL_STATE;
  58. } else if (storedData.previousState === LIKED_STATE) {
  59. sendVote(-1);
  60. if (storedData.likes > 0) storedData.likes--;
  61. storedData.dislikes++;
  62. setDislikes(numberFormat(storedData.dislikes));
  63. createRateBar(storedData.likes, storedData.dislikes);
  64. storedData.previousState = DISLIKED_STATE;
  65. }
  66. }
  67. }
  68. function addLikeDislikeEventListener() {
  69. const buttons = getButtons();
  70. if (!window.returnDislikeButtonlistenersSet) {
  71. buttons.children[0].addEventListener("click", likeClicked);
  72. buttons.children[1].addEventListener("click", dislikeClicked);
  73. buttons.children[0].addEventListener("touchstart", likeClicked);
  74. buttons.children[1].addEventListener("touchstart", dislikeClicked);
  75. window.returnDislikeButtonlistenersSet = true;
  76. }
  77. }
  78. function storageChangeHandler(changes, area) {
  79. if (changes.disableVoteSubmission !== undefined) {
  80. handleDisableVoteSubmissionChangeEvent(
  81. changes.disableVoteSubmission.newValue
  82. );
  83. }
  84. if (changes.coloredThumbs !== undefined) {
  85. handleColoredThumbsChangeEvent(changes.coloredThumbs.newValue);
  86. }
  87. if (changes.coloredBar !== undefined) {
  88. handleColoredBarChangeEvent(changes.coloredBar.newValue);
  89. }
  90. if (changes.colorTheme !== undefined) {
  91. handleColorThemeChangeEvent(changes.colorTheme.newValue);
  92. }
  93. if (changes.numberDisplayRoundDown !== undefined) {
  94. handleNumberDisplayRoundDownChangeEvent(
  95. changes.numberDisplayRoundDown.newValue
  96. );
  97. }
  98. if (changes.numberDisplayFormat !== undefined) {
  99. handleNumberDisplayFormatChangeEvent(changes.numberDisplayFormat.newValue);
  100. }
  101. if (changes.numberDisplayReformatLikes !== undefined) {
  102. handleNumberDisplayReformatLikesChangeEvent(changes.numberDisplayReformatLikes.newValue);
  103. }
  104. }
  105. function handleDisableVoteSubmissionChangeEvent(value) {
  106. extConfig.disableVoteSubmission = value;
  107. }
  108. function handleColoredThumbsChangeEvent(value) {
  109. extConfig.coloredThumbs = value;
  110. }
  111. function handleColoredBarChangeEvent(value) {
  112. extConfig.coloredBar = value;
  113. }
  114. function handleColorThemeChangeEvent(value) {
  115. if (!value) value = "classic";
  116. extConfig.colorTheme = value;
  117. }
  118. function handleNumberDisplayFormatChangeEvent(value) {
  119. extConfig.numberDisplayFormat = value;
  120. }
  121. function handleNumberDisplayRoundDownChangeEvent(value) {
  122. extConfig.numberDisplayRoundDown = value;
  123. }
  124. function handleNumberDisplayReformatLikesChangeEvent(value) {
  125. extConfig.numberDisplayReformatLikes = value;
  126. }
  127. export {
  128. sendVote,
  129. likeClicked,
  130. dislikeClicked,
  131. addLikeDislikeEventListener,
  132. storageChangeHandler,
  133. };