mirror of
https://github.com/Alvin-Zilverstand/return-youtube-dislike.git
synced 2026-10-28 07:40:27 +01:00
163 lines
4.9 KiB
JavaScript
163 lines
4.9 KiB
JavaScript
import { getBrowser, getVideoId, numberFormat, cLog } from "./utils";
|
|
import { checkForSignInButton, getButtons } from "./buttons";
|
|
import {
|
|
NEUTRAL_STATE,
|
|
LIKED_STATE,
|
|
DISLIKED_STATE,
|
|
setDislikes,
|
|
extConfig,
|
|
storedData,
|
|
setLikes,
|
|
getLikeCountFromButton,
|
|
} from "./state";
|
|
import { createRateBar } from "./bar";
|
|
|
|
function sendVote(vote) {
|
|
if (extConfig.disableVoteSubmission !== true) {
|
|
getBrowser().runtime.sendMessage({
|
|
message: "send_vote",
|
|
vote: vote,
|
|
videoId: getVideoId(window.location.href),
|
|
});
|
|
}
|
|
}
|
|
|
|
function likeClicked() {
|
|
if (checkForSignInButton() === false) {
|
|
if (storedData.previousState === DISLIKED_STATE) {
|
|
sendVote(1);
|
|
if (storedData.dislikes > 0) storedData.dislikes--;
|
|
storedData.likes++;
|
|
createRateBar(storedData.likes, storedData.dislikes);
|
|
setDislikes(numberFormat(storedData.dislikes));
|
|
storedData.previousState = LIKED_STATE;
|
|
} else if (storedData.previousState === NEUTRAL_STATE) {
|
|
sendVote(1);
|
|
storedData.likes++;
|
|
createRateBar(storedData.likes, storedData.dislikes);
|
|
storedData.previousState = LIKED_STATE;
|
|
} else if ((storedData.previousState = LIKED_STATE)) {
|
|
sendVote(0);
|
|
if (storedData.likes > 0) storedData.likes--;
|
|
createRateBar(storedData.likes, storedData.dislikes);
|
|
storedData.previousState = NEUTRAL_STATE;
|
|
}
|
|
if (extConfig.numberDisplayReformatLikes === true) {
|
|
const nativeLikes = getLikeCountFromButton();
|
|
if (nativeLikes !== false) {
|
|
setLikes(numberFormat(nativeLikes));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function dislikeClicked() {
|
|
if (checkForSignInButton() == false) {
|
|
if (storedData.previousState === NEUTRAL_STATE) {
|
|
sendVote(-1);
|
|
storedData.dislikes++;
|
|
setDislikes(numberFormat(storedData.dislikes));
|
|
createRateBar(storedData.likes, storedData.dislikes);
|
|
storedData.previousState = DISLIKED_STATE;
|
|
} else if (storedData.previousState === DISLIKED_STATE) {
|
|
sendVote(0);
|
|
if (storedData.dislikes > 0) storedData.dislikes--;
|
|
setDislikes(numberFormat(storedData.dislikes));
|
|
createRateBar(storedData.likes, storedData.dislikes);
|
|
storedData.previousState = NEUTRAL_STATE;
|
|
} else if (storedData.previousState === LIKED_STATE) {
|
|
sendVote(-1);
|
|
if (storedData.likes > 0) storedData.likes--;
|
|
storedData.dislikes++;
|
|
setDislikes(numberFormat(storedData.dislikes));
|
|
createRateBar(storedData.likes, storedData.dislikes);
|
|
storedData.previousState = DISLIKED_STATE;
|
|
if (extConfig.numberDisplayReformatLikes === true) {
|
|
const nativeLikes = getLikeCountFromButton();
|
|
if (nativeLikes !== false) {
|
|
setLikes(numberFormat(nativeLikes));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function addLikeDislikeEventListener() {
|
|
const buttons = getButtons();
|
|
if (!window.returnDislikeButtonlistenersSet) {
|
|
buttons.children[0].addEventListener("click", likeClicked);
|
|
buttons.children[1].addEventListener("click", dislikeClicked);
|
|
buttons.children[0].addEventListener("touchstart", likeClicked);
|
|
buttons.children[1].addEventListener("touchstart", dislikeClicked);
|
|
window.returnDislikeButtonlistenersSet = true;
|
|
}
|
|
}
|
|
|
|
function storageChangeHandler(changes, area) {
|
|
if (changes.disableVoteSubmission !== undefined) {
|
|
handleDisableVoteSubmissionChangeEvent(
|
|
changes.disableVoteSubmission.newValue
|
|
);
|
|
}
|
|
if (changes.coloredThumbs !== undefined) {
|
|
handleColoredThumbsChangeEvent(changes.coloredThumbs.newValue);
|
|
}
|
|
if (changes.coloredBar !== undefined) {
|
|
handleColoredBarChangeEvent(changes.coloredBar.newValue);
|
|
}
|
|
if (changes.colorTheme !== undefined) {
|
|
handleColorThemeChangeEvent(changes.colorTheme.newValue);
|
|
}
|
|
|
|
if (changes.numberDisplayRoundDown !== undefined) {
|
|
handleNumberDisplayRoundDownChangeEvent(
|
|
changes.numberDisplayRoundDown.newValue
|
|
);
|
|
}
|
|
if (changes.numberDisplayFormat !== undefined) {
|
|
handleNumberDisplayFormatChangeEvent(changes.numberDisplayFormat.newValue);
|
|
}
|
|
if (changes.numberDisplayReformatLikes !== undefined) {
|
|
handleNumberDisplayReformatLikesChangeEvent(
|
|
changes.numberDisplayReformatLikes.newValue
|
|
);
|
|
}
|
|
}
|
|
|
|
function handleDisableVoteSubmissionChangeEvent(value) {
|
|
extConfig.disableVoteSubmission = value;
|
|
}
|
|
|
|
function handleColoredThumbsChangeEvent(value) {
|
|
extConfig.coloredThumbs = value;
|
|
}
|
|
|
|
function handleColoredBarChangeEvent(value) {
|
|
extConfig.coloredBar = value;
|
|
}
|
|
|
|
function handleColorThemeChangeEvent(value) {
|
|
if (!value) value = "classic";
|
|
extConfig.colorTheme = value;
|
|
}
|
|
|
|
function handleNumberDisplayFormatChangeEvent(value) {
|
|
extConfig.numberDisplayFormat = value;
|
|
}
|
|
|
|
function handleNumberDisplayRoundDownChangeEvent(value) {
|
|
extConfig.numberDisplayRoundDown = value;
|
|
}
|
|
|
|
function handleNumberDisplayReformatLikesChangeEvent(value) {
|
|
extConfig.numberDisplayReformatLikes = value;
|
|
}
|
|
|
|
export {
|
|
sendVote,
|
|
likeClicked,
|
|
dislikeClicked,
|
|
addLikeDislikeEventListener,
|
|
storageChangeHandler,
|
|
};
|