popup.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /* Config */
  2. const config = {
  3. advanced: false,
  4. disableVoteSubmission: false,
  5. showAdvancedMessage: '<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"><rect fill="none" height="24" width="24"/><path d="M19.5,12c0-0.23-0.01-0.45-0.03-0.68l1.86-1.41c0.4-0.3,0.51-0.86,0.26-1.3l-1.87-3.23c-0.25-0.44-0.79-0.62-1.25-0.42 l-2.15,0.91c-0.37-0.26-0.76-0.49-1.17-0.68l-0.29-2.31C14.8,2.38,14.37,2,13.87,2h-3.73C9.63,2,9.2,2.38,9.14,2.88L8.85,5.19 c-0.41,0.19-0.8,0.42-1.17,0.68L5.53,4.96c-0.46-0.2-1-0.02-1.25,0.42L2.41,8.62c-0.25,0.44-0.14,0.99,0.26,1.3l1.86,1.41 C4.51,11.55,4.5,11.77,4.5,12s0.01,0.45,0.03,0.68l-1.86,1.41c-0.4,0.3-0.51,0.86-0.26,1.3l1.87,3.23c0.25,0.44,0.79,0.62,1.25,0.42 l2.15-0.91c0.37,0.26,0.76,0.49,1.17,0.68l0.29,2.31C9.2,21.62,9.63,22,10.13,22h3.73c0.5,0,0.93-0.38,0.99-0.88l0.29-2.31 c0.41-0.19,0.8-0.42,1.17-0.68l2.15,0.91c0.46,0.2,1,0.02,1.25-0.42l1.87-3.23c0.25-0.44,0.14-0.99-0.26-1.3l-1.86-1.41 C19.49,12.45,19.5,12.23,19.5,12z M12.04,15.5c-1.93,0-3.5-1.57-3.5-3.5s1.57-3.5,3.5-3.5s3.5,1.57,3.5,3.5S13.97,15.5,12.04,15.5z"/></svg>',
  6. hideAdvancedMessage: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor"><path d="M0 0h24v24H0V0z" fill="none" opacity=".87"/><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm4.3 14.3c-.39.39-1.02.39-1.41 0L12 13.41 9.11 16.3c-.39.39-1.02.39-1.41 0-.39-.39-.39-1.02 0-1.41L10.59 12 7.7 9.11c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L12 10.59l2.89-2.89c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41L13.41 12l2.89 2.89c.38.38.38 1.02 0 1.41z"/></svg>',
  7. links: {
  8. website: "https://returnyoutubedislike.com",
  9. github: "https://github.com/Anarios/return-youtube-dislike",
  10. discord: "https://discord.gg/mYnESY4Md5",
  11. donate: "https://returnyoutubedislike.com/donate",
  12. faq: "https://returnyoutubedislike.com/faq",
  13. help: "https://returnyoutubedislike.com/help"
  14. },
  15. };
  16. /* Links */
  17. createLink(config.links.website,"link_website")
  18. createLink(config.links.github,"link_github")
  19. createLink(config.links.discord,"link_discord")
  20. createLink(config.links.faq,"link_faq")
  21. createLink(config.links.donate,"link_donate")
  22. createLink(config.links.help,"link_help")
  23. function createLink(url,id) {
  24. document.getElementById(id).addEventListener("click",()=>{
  25. chrome.tabs.create({ url: url})
  26. })
  27. }
  28. document
  29. .getElementById("disable_vote_submission")
  30. .addEventListener("click", (ev) => {
  31. chrome.storage.sync.set({ disableVoteSubmission: ev.target.checked });
  32. });
  33. /* Advanced Toggle */
  34. const advancedToggle = document.getElementById("advancedToggle");
  35. advancedToggle.addEventListener("click", () => {
  36. const adv = document.getElementById("advancedSettings");
  37. if (config.advanced) {
  38. adv.style.transform = "scale(1.1)";
  39. adv.style.pointerEvents = "none";
  40. adv.style.opacity = "0";
  41. advancedToggle.innerHTML = config.showAdvancedMessage;
  42. config.advanced = false;
  43. } else {
  44. adv.style.transform = "scale(1)";
  45. adv.style.pointerEvents = "auto";
  46. adv.style.opacity = "1";
  47. advancedToggle.innerHTML = config.hideAdvancedMessage;
  48. config.advanced = true;
  49. }
  50. });
  51. initConfig();
  52. function initConfig() {
  53. initializeDisableVoteSubmission();
  54. initializeVersionNumber();
  55. }
  56. function initializeVersionNumber() {
  57. const version = chrome.runtime.getManifest().version;
  58. document.getElementById('ext-version').innerHTML = 'v' + version;
  59. fetch(
  60. "https://raw.githubusercontent.com/Anarios/return-youtube-dislike/main/Extensions/combined/manifest-chrome.json"
  61. )
  62. .then((response) => response.json())
  63. .then((json) => {
  64. if (version !== json.version) {
  65. document.getElementById('ext-update').innerHTML = 'update to v' + json.version;
  66. document.getElementById('ext-update').style.padding = '.25rem .5rem';
  67. }
  68. });
  69. // .catch(console.error);
  70. }
  71. function initializeDisableVoteSubmission() {
  72. chrome.storage.sync.get(["disableVoteSubmission"], (res) => {
  73. handleDisableVoteSubmissionChangeEvent(res.disableVoteSubmission);
  74. });
  75. }
  76. chrome.storage.onChanged.addListener(storageChangeHandler);
  77. function storageChangeHandler(changes, area) {
  78. if (changes.disableVoteSubmission !== undefined) {
  79. handleDisableVoteSubmissionChangeEvent(
  80. changes.disableVoteSubmission.newValue
  81. );
  82. }
  83. }
  84. function handleDisableVoteSubmissionChangeEvent(value) {
  85. config.disableVoteSubmission = value;
  86. document.getElementById("disable_vote_submission").checked = value;
  87. }
  88. (async function getStatus() {
  89. let status = document.getElementById("status");
  90. let serverStatus = document.getElementById("server-status");
  91. let resp = await fetch(
  92. "https://returnyoutubedislikeapi.com/votes?videoId=YbJOTdZBX1g"
  93. );
  94. let result = await resp.status;
  95. if (result === 200) {
  96. status.innerText = "Online";
  97. status.style.color = "green";
  98. serverStatus.style.filter =
  99. "invert(58%) sepia(81%) saturate(2618%) hue-rotate(81deg) brightness(119%) contrast(129%)";
  100. } else {
  101. status.innerText = "Offline";
  102. status.style.color = "red";
  103. serverStatus.style.filter =
  104. "invert(11%) sepia(100%) saturate(6449%) hue-rotate(3deg) brightness(116%) contrast(115%)";
  105. }
  106. })();
  107. /* popup-script.js
  108. document.querySelector('#login')
  109. .addEventListener('click', function () {
  110. chrome.runtime.sendMessage({ message: 'get_auth_token' });
  111. });
  112. document.querySelector("#log_off").addEventListener("click", function () {
  113. chrome.runtime.sendMessage({ message: "log_off" });
  114. });
  115. */