mirror of
https://github.com/Anarios/return-youtube-dislike.git
synced 2026-09-12 10:22:10 +02:00
79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
|
|
import { initPremiumAnalytics, teardownPremiumAnalytics, updatePremiumSession } from "./premiumAnalytics";
|
||
|
|
import {
|
||
|
|
initPremiumTeaser,
|
||
|
|
setTeaserSuppressed,
|
||
|
|
TEASER_SUPPRESSION_REASON_PREMIUM,
|
||
|
|
} from "./premiumAnalytics/teaser";
|
||
|
|
|
||
|
|
let patreonState = {
|
||
|
|
authenticated: false,
|
||
|
|
user: null,
|
||
|
|
sessionToken: null,
|
||
|
|
};
|
||
|
|
|
||
|
|
function initPatreonFeatures() {
|
||
|
|
initPremiumTeaser();
|
||
|
|
|
||
|
|
chrome.storage.sync.get(["patreonAuthenticated", "patreonUser", "patreonSessionToken"], (data) => {
|
||
|
|
if (data.patreonAuthenticated && data.patreonUser) {
|
||
|
|
patreonState.authenticated = true;
|
||
|
|
patreonState.user = data.patreonUser;
|
||
|
|
patreonState.sessionToken = data.patreonSessionToken;
|
||
|
|
updatePremiumSession({
|
||
|
|
token: patreonState.sessionToken,
|
||
|
|
active: patreonState.user?.hasActiveMembership,
|
||
|
|
membershipTier: patreonState.user?.membershipTier,
|
||
|
|
});
|
||
|
|
enablePremiumFeatures();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||
|
|
if (request.message === "patreon_status_changed") {
|
||
|
|
patreonState.authenticated = request.authenticated;
|
||
|
|
patreonState.user = request.user || null;
|
||
|
|
|
||
|
|
if (request.authenticated) {
|
||
|
|
patreonState.sessionToken = request.sessionToken ?? patreonState.sessionToken;
|
||
|
|
updatePremiumSession({
|
||
|
|
token: patreonState.sessionToken,
|
||
|
|
active: patreonState.user?.hasActiveMembership,
|
||
|
|
membershipTier: patreonState.user?.membershipTier,
|
||
|
|
});
|
||
|
|
enablePremiumFeatures();
|
||
|
|
} else {
|
||
|
|
patreonState.sessionToken = null;
|
||
|
|
updatePremiumSession({ token: null, active: false });
|
||
|
|
disablePremiumFeatures();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
function enablePremiumFeatures() {
|
||
|
|
const tier = patreonState.user?.membershipTier;
|
||
|
|
const hasActiveMembership = patreonState.user?.hasActiveMembership;
|
||
|
|
|
||
|
|
if (hasActiveMembership && tier === "premium") {
|
||
|
|
setTeaserSuppressed(true, TEASER_SUPPRESSION_REASON_PREMIUM);
|
||
|
|
initPremiumAnalytics();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function disablePremiumFeatures() {
|
||
|
|
const premiumElements = document.querySelectorAll(".ryd-premium-feature");
|
||
|
|
premiumElements.forEach((el) => el.remove());
|
||
|
|
teardownPremiumAnalytics();
|
||
|
|
setTeaserSuppressed(false, TEASER_SUPPRESSION_REASON_PREMIUM);
|
||
|
|
}
|
||
|
|
|
||
|
|
function isPatreonUser() {
|
||
|
|
return patreonState.authenticated && patreonState.user?.hasActiveMembership;
|
||
|
|
}
|
||
|
|
|
||
|
|
function getPatreonTier() {
|
||
|
|
return patreonState.user?.membershipTier || "none";
|
||
|
|
}
|
||
|
|
|
||
|
|
export { initPatreonFeatures, isPatreonUser, getPatreonTier, patreonState };
|