diff --git a/Extensions/combined/dist/chrome/bundled-content-script.js b/Extensions/combined/dist/chrome/bundled-content-script.js
index 4685457..418a10d 100644
--- a/Extensions/combined/dist/chrome/bundled-content-script.js
+++ b/Extensions/combined/dist/chrome/bundled-content-script.js
@@ -96,11 +96,13 @@ function cLog(message, writer) {
function sendVote(vote) {
- getBrowser().runtime.sendMessage({
- message: "send_vote",
- vote: vote,
- videoId: getVideoId(window.location.href)
- });
+ if (extConfig.disableVoteSubmission !== true) {
+ getBrowser().runtime.sendMessage({
+ message: "send_vote",
+ vote: vote,
+ videoId: getVideoId(window.location.href)
+ });
+ }
}
function sendVideoIds() {
@@ -118,7 +120,7 @@ function sendVideoIds() {
});
}
-function likeClicked(storedData) {
+function likeClicked() {
if (checkForSignInButton() === false) {
if (storedData.previousState === DISLIKED_STATE) {
sendVote(1);
@@ -141,7 +143,7 @@ function likeClicked(storedData) {
}
}
-function dislikeClicked(storedData) {
+function dislikeClicked() {
if (checkForSignInButton() == false) {
if (storedData.previousState === NEUTRAL_STATE) {
sendVote(-1);
@@ -166,6 +168,26 @@ function dislikeClicked(storedData) {
}
}
+function addLikeDislikeEventListener() {
+ var buttons = buttons_getButtons();
+
+ if (!window.returnDislikeButtonlistenersSet) {
+ buttons.children[0].addEventListener("click", likeClicked);
+ buttons.children[1].addEventListener("click", dislikeClicked);
+ window.returnDislikeButtonlistenersSet = true;
+ }
+}
+
+function storageChangeHandler(changes, area) {
+ if (changes.disableVoteSubmission !== undefined) {
+ handleDisableVoteSubmissionChangeEvent(changes.disableVoteSubmission.newValue);
+ }
+}
+
+function handleDisableVoteSubmissionChangeEvent(value) {
+ extConfig.disableVoteSubmission = value;
+}
+
;// CONCATENATED MODULE: ./Extensions/combined/src/state.js
@@ -175,6 +197,14 @@ function dislikeClicked(storedData) {
var LIKED_STATE = "LIKED_STATE";
var DISLIKED_STATE = "DISLIKED_STATE";
var NEUTRAL_STATE = "NEUTRAL_STATE";
+var extConfig = {
+ disableVoteSubmission: false
+};
+var storedData = {
+ likes: 0,
+ dislikes: 0,
+ previousState: NEUTRAL_STATE
+};
function isMobile() {
return location.hostname == "m.youtube.com";
@@ -262,13 +292,29 @@ function setState(storedData) {
});
}
-function setInitialState(storedData) {
+function setInitialState() {
setState(storedData);
setTimeout(function () {
sendVideoIds();
}, 1500);
}
+function initExtConfig() {
+ initializeDisableVoteSubmission();
+}
+
+function initializeDisableVoteSubmission() {
+ getBrowser().storage.sync.get(['disableVoteSubmission'], function (res) {
+ if (res.disableVoteSubmission === undefined) {
+ getBrowser().storage.sync.set({
+ disableVoteSubmission: false
+ });
+ } else {
+ extConfig.disableVoteSubmission = res.disableVoteSubmission;
+ }
+ });
+}
+
;// CONCATENATED MODULE: ./Extensions/combined/src/buttons.js
@@ -313,11 +359,7 @@ function checkForSignInButton() {
-var storedData = {
- likes: 0,
- dislikes: 0,
- previousState: NEUTRAL_STATE
-};
+initExtConfig();
var jsInitChecktimer = null;
function setEventListeners(evt) {
@@ -327,19 +369,9 @@ function setEventListeners(evt) {
if ((_getButtons = buttons_getButtons()) !== null && _getButtons !== void 0 && _getButtons.offsetParent && isVideoLoaded()) {
clearInterval(jsInitChecktimer);
jsInitChecktimer = null;
- var buttons = buttons_getButtons();
-
- if (!window.returnDislikeButtonlistenersSet) {
- buttons.children[0].addEventListener("click", function () {
- return likeClicked(storedData);
- });
- buttons.children[1].addEventListener("click", function () {
- return dislikeClicked(storedData);
- });
- window.returnDislikeButtonlistenersSet = true;
- }
-
- setInitialState(storedData);
+ addLikeDislikeEventListener();
+ setInitialState();
+ getBrowser().storage.onChanged.addListener(storageChangeHandler);
}
}
diff --git a/Extensions/combined/dist/chrome/icons/icon_hold128.png b/Extensions/combined/dist/chrome/icons/icon_hold128.png
new file mode 100644
index 0000000..359a686
Binary files /dev/null and b/Extensions/combined/dist/chrome/icons/icon_hold128.png differ
diff --git a/Extensions/combined/dist/chrome/icons/server.png b/Extensions/combined/dist/chrome/icons/server.png
new file mode 100644
index 0000000..4a104f0
Binary files /dev/null and b/Extensions/combined/dist/chrome/icons/server.png differ
diff --git a/Extensions/combined/dist/chrome/popup.css b/Extensions/combined/dist/chrome/popup.css
index 3075989..db57f13 100644
--- a/Extensions/combined/dist/chrome/popup.css
+++ b/Extensions/combined/dist/chrome/popup.css
@@ -17,7 +17,7 @@ body {
color: var(--white);
min-width: 300px;
padding: 0.5em;
- font-family: 'Roboto', Arial, Helvetica, sans-serif;
+ font-family: "Roboto", Arial, Helvetica, sans-serif;
font-size: 14px;
}
@@ -33,8 +33,9 @@ button {
border: none;
border-radius: 4px;
font-weight: 500;
- box-shadow: 0 2px 4px -1px rgb(0 0 0 / 20%), 0 4px 5px 0 rgb(0 0 0 / 14%), 0 1px 10px 0 rgb(0 0 0 / 12%);
- transition: .4s;
+ box-shadow: 0 2px 4px -1px rgb(0 0 0 / 20%), 0 4px 5px 0 rgb(0 0 0 / 14%),
+ 0 1px 10px 0 rgb(0 0 0 / 12%);
+ transition: 0.4s;
}
button:hover {
diff --git a/Extensions/combined/dist/chrome/popup.html b/Extensions/combined/dist/chrome/popup.html
index d97cd65..c8a9c0d 100644
--- a/Extensions/combined/dist/chrome/popup.html
+++ b/Extensions/combined/dist/chrome/popup.html
@@ -4,44 +4,56 @@
Return YouTube Dislike
-
-
-
+
+
+
-
+
Return YouTube Dislike
+
+ API Status:
by Dmitrii Selivanov & Community
-
+
+
-
-
-
-
-
+
+
+
+
diff --git a/Extensions/combined/dist/chrome/popup.js b/Extensions/combined/dist/chrome/popup.js
index c05ea5f..9f09cdf 100644
--- a/Extensions/combined/dist/chrome/popup.js
+++ b/Extensions/combined/dist/chrome/popup.js
@@ -3,12 +3,14 @@ const config = {
advanced: false,
showAdvancedMessage: "Show Settings",
hideAdvancedMessage: "Hide Settings",
+ disableVoteSubmission: false,
links: {
website: "https://returnyoutubedislike.com",
github: "https://github.com/Anarios/return-youtube-dislike",
discord: "https://discord.gg/mYnESY4Md5",
- donate: 'https://returnyoutubedislike.com/donate'
+ donate: "https://returnyoutubedislike.com/donate",
+ faq: "https://returnyoutubedislike.com/faq",
},
};
@@ -25,14 +27,21 @@ document.getElementById("link_discord").addEventListener("click", () => {
chrome.tabs.create({ url: config.links.discord });
});
+document.getElementById("link_faq").addEventListener("click", () => {
+ chrome.tabs.create({ url: config.links.faq });
+});
+
document.getElementById("link_donate").addEventListener("click", () => {
chrome.tabs.create({ url: config.links.donate });
});
+document
+ .getElementById("disable_vote_submission")
+ .addEventListener("click", (ev) => {
+ chrome.storage.sync.set({ disableVoteSubmission: ev.target.checked });
+ });
-chrome.runtime.sendMessage({ message: 'get_auth_token' });
/* Advanced Toggle */
-/* Not currently used in this version
const advancedToggle = document.getElementById("advancedToggle");
advancedToggle.addEventListener("click", () => {
const adv = document.getElementById("advancedSettings");
@@ -46,7 +55,48 @@ advancedToggle.addEventListener("click", () => {
config.advanced = true;
}
});
-*/
+
+initConfig();
+
+function initConfig() {
+ initializeDisableVoteSubmission();
+}
+
+function initializeDisableVoteSubmission() {
+ chrome.storage.sync.get(["disableVoteSubmission"], (res) => {
+ handleDisableVoteSubmissionChangeEvent(res.disableVoteSubmission);
+ });
+}
+
+chrome.storage.onChanged.addListener(storageChangeHandler);
+
+function storageChangeHandler(changes, area) {
+ if (changes.disableVoteSubmission !== undefined) {
+ handleDisableVoteSubmissionChangeEvent(
+ changes.disableVoteSubmission.newValue
+ );
+ }
+}
+
+function handleDisableVoteSubmissionChangeEvent(value) {
+ config.disableVoteSubmission = value;
+ document.getElementById("disable_vote_submission").checked = value;
+}
+
+(async function getStatus() {
+ let status = document.getElementById("status");
+ let resp = await fetch(
+ "https://returnyoutubedislikeapi.com/votes?videoId=YbJOTdZBX1g"
+ );
+ let result = await resp.status;
+ if (result === 200) {
+ status.innerText = "Online";
+ status.style.color = "green";
+ } else {
+ status.innerText = "Offline";
+ status.style.color = "red";
+ }
+})();
/* popup-script.js
document.querySelector('#login')
diff --git a/Extensions/combined/dist/chrome/ryd.background.js b/Extensions/combined/dist/chrome/ryd.background.js
index f2f8b36..e332d8d 100644
--- a/Extensions/combined/dist/chrome/ryd.background.js
+++ b/Extensions/combined/dist/chrome/ryd.background.js
@@ -1,12 +1,17 @@
const apiUrl = "https://returnyoutubedislikeapi.com";
+const voteDisabledIconName = 'icon_hold128.png';
+const defaultIconName = 'icon128.png';
let api;
-if (typeof chrome !== "undefined" && typeof chrome.runtime !== "undefined")
- api = chrome;
-else if (
- typeof browser !== "undefined" &&
- typeof browser.runtime !== "undefined"
-)
- api = browser;
+
+/** stores extension's global config */
+let extConfig = {
+ disableVoteSubmission: false
+}
+
+if (isChrome()) api = chrome;
+else if (isFirefox()) api = browser;
+
+initExtConfig()
api.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.message === "get_auth_token") {
@@ -218,3 +223,50 @@ function generateUserID(length = 36) {
return result;
}
}
+
+function storageChangeHandler(changes, area) {
+ if (changes.disableVoteSubmission !== undefined) {
+ handleDisableVoteSubmissionChangeEvent(changes.disableVoteSubmission.newValue);
+ }
+}
+
+function handleDisableVoteSubmissionChangeEvent(value) {
+ extConfig.disableVoteSubmission = value;
+ if (value === true) {
+ changeIcon(voteDisabledIconName);
+ } else {
+ changeIcon(defaultIconName);
+ }
+}
+
+function changeIcon(iconName) {
+ if (api.action !== undefined) api.action.setIcon({path: "/icons/" + iconName});
+ else if (api.browserAction !== undefined) api.browserAction.setIcon({path: "/icons/" + iconName});
+ else console.log('changing icon is not supported');
+}
+
+api.storage.onChanged.addListener(storageChangeHandler);
+
+function initExtConfig() {
+ initializeDisableVoteSubmission();
+}
+
+function initializeDisableVoteSubmission() {
+ api.storage.sync.get(['disableVoteSubmission'], (res) => {
+ if (res.disableVoteSubmission === undefined) {
+ api.storage.sync.set({disableVoteSubmission: false});
+ }
+ else {
+ extConfig.disableVoteSubmission = res.disableVoteSubmission;
+ if (res.disableVoteSubmission) changeIcon(voteDisabledIconName);
+ }
+ });
+}
+
+function isChrome() {
+ return typeof chrome !== "undefined" && typeof chrome.runtime !== "undefined";
+}
+
+function isFirefox() {
+ return typeof browser !== "undefined" && typeof browser.runtime !== "undefined";
+}
\ No newline at end of file
diff --git a/Extensions/combined/dist/firefox/bundled-content-script.js b/Extensions/combined/dist/firefox/bundled-content-script.js
index 4685457..418a10d 100644
--- a/Extensions/combined/dist/firefox/bundled-content-script.js
+++ b/Extensions/combined/dist/firefox/bundled-content-script.js
@@ -96,11 +96,13 @@ function cLog(message, writer) {
function sendVote(vote) {
- getBrowser().runtime.sendMessage({
- message: "send_vote",
- vote: vote,
- videoId: getVideoId(window.location.href)
- });
+ if (extConfig.disableVoteSubmission !== true) {
+ getBrowser().runtime.sendMessage({
+ message: "send_vote",
+ vote: vote,
+ videoId: getVideoId(window.location.href)
+ });
+ }
}
function sendVideoIds() {
@@ -118,7 +120,7 @@ function sendVideoIds() {
});
}
-function likeClicked(storedData) {
+function likeClicked() {
if (checkForSignInButton() === false) {
if (storedData.previousState === DISLIKED_STATE) {
sendVote(1);
@@ -141,7 +143,7 @@ function likeClicked(storedData) {
}
}
-function dislikeClicked(storedData) {
+function dislikeClicked() {
if (checkForSignInButton() == false) {
if (storedData.previousState === NEUTRAL_STATE) {
sendVote(-1);
@@ -166,6 +168,26 @@ function dislikeClicked(storedData) {
}
}
+function addLikeDislikeEventListener() {
+ var buttons = buttons_getButtons();
+
+ if (!window.returnDislikeButtonlistenersSet) {
+ buttons.children[0].addEventListener("click", likeClicked);
+ buttons.children[1].addEventListener("click", dislikeClicked);
+ window.returnDislikeButtonlistenersSet = true;
+ }
+}
+
+function storageChangeHandler(changes, area) {
+ if (changes.disableVoteSubmission !== undefined) {
+ handleDisableVoteSubmissionChangeEvent(changes.disableVoteSubmission.newValue);
+ }
+}
+
+function handleDisableVoteSubmissionChangeEvent(value) {
+ extConfig.disableVoteSubmission = value;
+}
+
;// CONCATENATED MODULE: ./Extensions/combined/src/state.js
@@ -175,6 +197,14 @@ function dislikeClicked(storedData) {
var LIKED_STATE = "LIKED_STATE";
var DISLIKED_STATE = "DISLIKED_STATE";
var NEUTRAL_STATE = "NEUTRAL_STATE";
+var extConfig = {
+ disableVoteSubmission: false
+};
+var storedData = {
+ likes: 0,
+ dislikes: 0,
+ previousState: NEUTRAL_STATE
+};
function isMobile() {
return location.hostname == "m.youtube.com";
@@ -262,13 +292,29 @@ function setState(storedData) {
});
}
-function setInitialState(storedData) {
+function setInitialState() {
setState(storedData);
setTimeout(function () {
sendVideoIds();
}, 1500);
}
+function initExtConfig() {
+ initializeDisableVoteSubmission();
+}
+
+function initializeDisableVoteSubmission() {
+ getBrowser().storage.sync.get(['disableVoteSubmission'], function (res) {
+ if (res.disableVoteSubmission === undefined) {
+ getBrowser().storage.sync.set({
+ disableVoteSubmission: false
+ });
+ } else {
+ extConfig.disableVoteSubmission = res.disableVoteSubmission;
+ }
+ });
+}
+
;// CONCATENATED MODULE: ./Extensions/combined/src/buttons.js
@@ -313,11 +359,7 @@ function checkForSignInButton() {
-var storedData = {
- likes: 0,
- dislikes: 0,
- previousState: NEUTRAL_STATE
-};
+initExtConfig();
var jsInitChecktimer = null;
function setEventListeners(evt) {
@@ -327,19 +369,9 @@ function setEventListeners(evt) {
if ((_getButtons = buttons_getButtons()) !== null && _getButtons !== void 0 && _getButtons.offsetParent && isVideoLoaded()) {
clearInterval(jsInitChecktimer);
jsInitChecktimer = null;
- var buttons = buttons_getButtons();
-
- if (!window.returnDislikeButtonlistenersSet) {
- buttons.children[0].addEventListener("click", function () {
- return likeClicked(storedData);
- });
- buttons.children[1].addEventListener("click", function () {
- return dislikeClicked(storedData);
- });
- window.returnDislikeButtonlistenersSet = true;
- }
-
- setInitialState(storedData);
+ addLikeDislikeEventListener();
+ setInitialState();
+ getBrowser().storage.onChanged.addListener(storageChangeHandler);
}
}
diff --git a/Extensions/combined/dist/firefox/icons/icon_hold128.png b/Extensions/combined/dist/firefox/icons/icon_hold128.png
new file mode 100644
index 0000000..359a686
Binary files /dev/null and b/Extensions/combined/dist/firefox/icons/icon_hold128.png differ
diff --git a/Extensions/combined/dist/firefox/icons/server.png b/Extensions/combined/dist/firefox/icons/server.png
new file mode 100644
index 0000000..4a104f0
Binary files /dev/null and b/Extensions/combined/dist/firefox/icons/server.png differ
diff --git a/Extensions/combined/dist/firefox/popup.css b/Extensions/combined/dist/firefox/popup.css
index 3075989..db57f13 100644
--- a/Extensions/combined/dist/firefox/popup.css
+++ b/Extensions/combined/dist/firefox/popup.css
@@ -17,7 +17,7 @@ body {
color: var(--white);
min-width: 300px;
padding: 0.5em;
- font-family: 'Roboto', Arial, Helvetica, sans-serif;
+ font-family: "Roboto", Arial, Helvetica, sans-serif;
font-size: 14px;
}
@@ -33,8 +33,9 @@ button {
border: none;
border-radius: 4px;
font-weight: 500;
- box-shadow: 0 2px 4px -1px rgb(0 0 0 / 20%), 0 4px 5px 0 rgb(0 0 0 / 14%), 0 1px 10px 0 rgb(0 0 0 / 12%);
- transition: .4s;
+ box-shadow: 0 2px 4px -1px rgb(0 0 0 / 20%), 0 4px 5px 0 rgb(0 0 0 / 14%),
+ 0 1px 10px 0 rgb(0 0 0 / 12%);
+ transition: 0.4s;
}
button:hover {
diff --git a/Extensions/combined/dist/firefox/popup.html b/Extensions/combined/dist/firefox/popup.html
index d97cd65..c8a9c0d 100644
--- a/Extensions/combined/dist/firefox/popup.html
+++ b/Extensions/combined/dist/firefox/popup.html
@@ -4,44 +4,56 @@
Return YouTube Dislike
-
-
-
+
+
+
-
+
Return YouTube Dislike
+
+ API Status:
by Dmitrii Selivanov & Community
-
+
+
-
-
-
-
-
+
+
+
+
diff --git a/Extensions/combined/dist/firefox/popup.js b/Extensions/combined/dist/firefox/popup.js
index c05ea5f..9f09cdf 100644
--- a/Extensions/combined/dist/firefox/popup.js
+++ b/Extensions/combined/dist/firefox/popup.js
@@ -3,12 +3,14 @@ const config = {
advanced: false,
showAdvancedMessage: "Show Settings",
hideAdvancedMessage: "Hide Settings",
+ disableVoteSubmission: false,
links: {
website: "https://returnyoutubedislike.com",
github: "https://github.com/Anarios/return-youtube-dislike",
discord: "https://discord.gg/mYnESY4Md5",
- donate: 'https://returnyoutubedislike.com/donate'
+ donate: "https://returnyoutubedislike.com/donate",
+ faq: "https://returnyoutubedislike.com/faq",
},
};
@@ -25,14 +27,21 @@ document.getElementById("link_discord").addEventListener("click", () => {
chrome.tabs.create({ url: config.links.discord });
});
+document.getElementById("link_faq").addEventListener("click", () => {
+ chrome.tabs.create({ url: config.links.faq });
+});
+
document.getElementById("link_donate").addEventListener("click", () => {
chrome.tabs.create({ url: config.links.donate });
});
+document
+ .getElementById("disable_vote_submission")
+ .addEventListener("click", (ev) => {
+ chrome.storage.sync.set({ disableVoteSubmission: ev.target.checked });
+ });
-chrome.runtime.sendMessage({ message: 'get_auth_token' });
/* Advanced Toggle */
-/* Not currently used in this version
const advancedToggle = document.getElementById("advancedToggle");
advancedToggle.addEventListener("click", () => {
const adv = document.getElementById("advancedSettings");
@@ -46,7 +55,48 @@ advancedToggle.addEventListener("click", () => {
config.advanced = true;
}
});
-*/
+
+initConfig();
+
+function initConfig() {
+ initializeDisableVoteSubmission();
+}
+
+function initializeDisableVoteSubmission() {
+ chrome.storage.sync.get(["disableVoteSubmission"], (res) => {
+ handleDisableVoteSubmissionChangeEvent(res.disableVoteSubmission);
+ });
+}
+
+chrome.storage.onChanged.addListener(storageChangeHandler);
+
+function storageChangeHandler(changes, area) {
+ if (changes.disableVoteSubmission !== undefined) {
+ handleDisableVoteSubmissionChangeEvent(
+ changes.disableVoteSubmission.newValue
+ );
+ }
+}
+
+function handleDisableVoteSubmissionChangeEvent(value) {
+ config.disableVoteSubmission = value;
+ document.getElementById("disable_vote_submission").checked = value;
+}
+
+(async function getStatus() {
+ let status = document.getElementById("status");
+ let resp = await fetch(
+ "https://returnyoutubedislikeapi.com/votes?videoId=YbJOTdZBX1g"
+ );
+ let result = await resp.status;
+ if (result === 200) {
+ status.innerText = "Online";
+ status.style.color = "green";
+ } else {
+ status.innerText = "Offline";
+ status.style.color = "red";
+ }
+})();
/* popup-script.js
document.querySelector('#login')
diff --git a/Extensions/combined/dist/firefox/ryd.background.js b/Extensions/combined/dist/firefox/ryd.background.js
index f2f8b36..e332d8d 100644
--- a/Extensions/combined/dist/firefox/ryd.background.js
+++ b/Extensions/combined/dist/firefox/ryd.background.js
@@ -1,12 +1,17 @@
const apiUrl = "https://returnyoutubedislikeapi.com";
+const voteDisabledIconName = 'icon_hold128.png';
+const defaultIconName = 'icon128.png';
let api;
-if (typeof chrome !== "undefined" && typeof chrome.runtime !== "undefined")
- api = chrome;
-else if (
- typeof browser !== "undefined" &&
- typeof browser.runtime !== "undefined"
-)
- api = browser;
+
+/** stores extension's global config */
+let extConfig = {
+ disableVoteSubmission: false
+}
+
+if (isChrome()) api = chrome;
+else if (isFirefox()) api = browser;
+
+initExtConfig()
api.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.message === "get_auth_token") {
@@ -218,3 +223,50 @@ function generateUserID(length = 36) {
return result;
}
}
+
+function storageChangeHandler(changes, area) {
+ if (changes.disableVoteSubmission !== undefined) {
+ handleDisableVoteSubmissionChangeEvent(changes.disableVoteSubmission.newValue);
+ }
+}
+
+function handleDisableVoteSubmissionChangeEvent(value) {
+ extConfig.disableVoteSubmission = value;
+ if (value === true) {
+ changeIcon(voteDisabledIconName);
+ } else {
+ changeIcon(defaultIconName);
+ }
+}
+
+function changeIcon(iconName) {
+ if (api.action !== undefined) api.action.setIcon({path: "/icons/" + iconName});
+ else if (api.browserAction !== undefined) api.browserAction.setIcon({path: "/icons/" + iconName});
+ else console.log('changing icon is not supported');
+}
+
+api.storage.onChanged.addListener(storageChangeHandler);
+
+function initExtConfig() {
+ initializeDisableVoteSubmission();
+}
+
+function initializeDisableVoteSubmission() {
+ api.storage.sync.get(['disableVoteSubmission'], (res) => {
+ if (res.disableVoteSubmission === undefined) {
+ api.storage.sync.set({disableVoteSubmission: false});
+ }
+ else {
+ extConfig.disableVoteSubmission = res.disableVoteSubmission;
+ if (res.disableVoteSubmission) changeIcon(voteDisabledIconName);
+ }
+ });
+}
+
+function isChrome() {
+ return typeof chrome !== "undefined" && typeof chrome.runtime !== "undefined";
+}
+
+function isFirefox() {
+ return typeof browser !== "undefined" && typeof browser.runtime !== "undefined";
+}
\ No newline at end of file
diff --git a/Extensions/combined/icons/server.png b/Extensions/combined/icons/server.png
new file mode 100644
index 0000000..4a104f0
Binary files /dev/null and b/Extensions/combined/icons/server.png differ
diff --git a/Extensions/combined/popup.css b/Extensions/combined/popup.css
index 3075989..db57f13 100644
--- a/Extensions/combined/popup.css
+++ b/Extensions/combined/popup.css
@@ -17,7 +17,7 @@ body {
color: var(--white);
min-width: 300px;
padding: 0.5em;
- font-family: 'Roboto', Arial, Helvetica, sans-serif;
+ font-family: "Roboto", Arial, Helvetica, sans-serif;
font-size: 14px;
}
@@ -33,8 +33,9 @@ button {
border: none;
border-radius: 4px;
font-weight: 500;
- box-shadow: 0 2px 4px -1px rgb(0 0 0 / 20%), 0 4px 5px 0 rgb(0 0 0 / 14%), 0 1px 10px 0 rgb(0 0 0 / 12%);
- transition: .4s;
+ box-shadow: 0 2px 4px -1px rgb(0 0 0 / 20%), 0 4px 5px 0 rgb(0 0 0 / 14%),
+ 0 1px 10px 0 rgb(0 0 0 / 12%);
+ transition: 0.4s;
}
button:hover {
diff --git a/Extensions/combined/popup.html b/Extensions/combined/popup.html
index 1bf8737..c8a9c0d 100644
--- a/Extensions/combined/popup.html
+++ b/Extensions/combined/popup.html
@@ -4,29 +4,39 @@
Return YouTube Dislike
-
-
-
+
+
+
-
+
Return YouTube Dislike
+
+ API Status:
by Dmitrii Selivanov & Community
-
-
+
+
-
+
-
+
-
-
+