mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-11 05:57:07 +03:00
72 lines
2.9 KiB
TypeScript
72 lines
2.9 KiB
TypeScript
import Config from "./config";
|
|
import { checkLicenseKey } from "./utils/licenseKey";
|
|
import { localizeHtmlPage } from "./utils/pageUtils";
|
|
|
|
import * as countries from "../public/res/countries.json";
|
|
|
|
// This is needed, if Config is not imported before Utils, things break.
|
|
// Probably due to cyclic dependencies
|
|
Config.config;
|
|
|
|
window.addEventListener('DOMContentLoaded', init);
|
|
|
|
async function init() {
|
|
localizeHtmlPage();
|
|
|
|
const cantAfford = document.getElementById("cantAfford");
|
|
const cantAffordTexts = chrome.i18n.getMessage("cantAfford").split(/{|}/);
|
|
cantAfford.appendChild(document.createTextNode(cantAffordTexts[0]));
|
|
const discountButton = document.createElement("span");
|
|
discountButton.id = "discountButton";
|
|
discountButton.innerText = cantAffordTexts[1];
|
|
cantAfford.appendChild(discountButton);
|
|
cantAfford.appendChild(document.createTextNode(cantAffordTexts[2]));
|
|
|
|
const redeemButton = document.getElementById("redeemButton") as HTMLInputElement;
|
|
const redeemInput = document.getElementById("redeemCodeInput") as HTMLInputElement;
|
|
redeemButton.addEventListener("click", async () => {
|
|
const licenseKey = redeemInput.value;
|
|
|
|
if (await checkLicenseKey(licenseKey)) {
|
|
Config.config.payments.licenseKey = licenseKey;
|
|
Config.forceSyncUpdate("payments");
|
|
|
|
alert(chrome.i18n.getMessage("redeemSuccess"));
|
|
} else {
|
|
alert(chrome.i18n.getMessage("redeemFailed"));
|
|
}
|
|
});
|
|
|
|
discountButton.addEventListener("click", async () => {
|
|
const subsidizedSection = document.getElementById("subsidizedPrice");
|
|
subsidizedSection.classList.remove("hidden");
|
|
|
|
const oldSelector = document.getElementById("countrySelector");
|
|
if (oldSelector) oldSelector.remove();
|
|
const countrySelector = document.createElement("select");
|
|
countrySelector.id = "countrySelector";
|
|
countrySelector.className = "optionsSelector";
|
|
const defaultOption = document.createElement("option");
|
|
defaultOption.innerText = chrome.i18n.getMessage("chooseACountry");
|
|
countrySelector.appendChild(defaultOption);
|
|
|
|
for (const country of Object.keys(countries)) {
|
|
const option = document.createElement("option");
|
|
option.value = country;
|
|
option.innerText = country;
|
|
countrySelector.appendChild(option);
|
|
}
|
|
|
|
countrySelector.addEventListener("change", () => {
|
|
if (countries[countrySelector.value]?.allowed) {
|
|
document.getElementById("subsidizedLink").classList.remove("hidden");
|
|
document.getElementById("noSubsidizedLink").classList.add("hidden");
|
|
} else {
|
|
document.getElementById("subsidizedLink").classList.add("hidden");
|
|
document.getElementById("noSubsidizedLink").classList.remove("hidden");
|
|
}
|
|
});
|
|
|
|
subsidizedSection.appendChild(countrySelector);
|
|
});
|
|
} |