This commit is contained in:
wukko
2022-08-16 16:31:41 +06:00
parent c0f51e841b
commit a7ea766289
12 changed files with 108 additions and 51 deletions

View File

@@ -288,6 +288,7 @@ input[type="checkbox"] {
text-align: left;
float: left;
line-height: 1.7rem;
user-select: text;
}
#popup-title {
font-size: 1.5rem;

View File

@@ -15,6 +15,12 @@ let exceptions = { // fuck you apple
function eid(id) {
return document.getElementById(id)
}
function sGet(id) {
return localStorage.getItem(id)
}
function sSet(id, value) {
localStorage.setItem(id, value)
}
function enable(id) {
eid(id).dataset.enabled = "true";
}
@@ -31,7 +37,7 @@ function changeDownloadButton(action, text) {
switch (action) {
case 0:
eid("download-button").disabled = true
if (localStorage.getItem("alwaysVisibleButton") == "true") {
if (sGet("alwaysVisibleButton") == "true") {
eid("download-button").value = text
eid("download-button").style.padding = '0 1rem'
} else {
@@ -69,7 +75,7 @@ function copy(id, data) {
}
function detectColorScheme() {
let theme = "auto";
let localTheme = localStorage.getItem("theme");
let localTheme = sGet("theme");
if (localTheme) {
theme = localTheme;
} else if (!window.matchMedia) {
@@ -102,11 +108,11 @@ function popup(type, action, text) {
case "about":
let tabId = text ? text : "changelog";
if (tabId == "changelog") {
localStorage.setItem("changelogStatus", version)
sSet("changelogStatus", version)
}
eid(`tab-button-${type}-${tabId}`).click();
eid("popup-about").style.visibility = vis(action);
if (!localStorage.getItem("seenAbout")) localStorage.setItem("seenAbout", "true");
if (!sGet("seenAbout")) sSet("seenAbout", "true");
break;
case "settings":
eid(`tab-button-${type}-video`).click();
@@ -130,14 +136,14 @@ function popup(type, action, text) {
}
function changeSwitcher(li, b) {
if (b) {
localStorage.setItem(li, b);
sSet(li, b);
for (i in switchers[li]) {
(switchers[li][i] == b) ? enable(`${li}-${b}`) : disable(`${li}-${switchers[li][i]}`)
}
if (li == "theme") detectColorScheme();
} else {
let pref = switchers[li][0];
localStorage.setItem(li, pref);
sSet(li, pref);
if (isIOS && exceptions[li]) pref = exceptions[li];
for (i in switchers[li]) {
(switchers[li][i] == pref) ? enable(`${li}-${pref}`) : disable(`${li}-${switchers[li][i]}`)
@@ -151,47 +157,50 @@ function internetError() {
}
function checkbox(action) {
if (eid(action).checked) {
localStorage.setItem(action, "true");
sSet(action, "true");
if (action == "alwaysVisibleButton") button();
} else {
localStorage.setItem(action, "false");
sSet(action, "false");
if (action == "alwaysVisibleButton") button();
}
}
function loadSettings() {
if (localStorage.getItem("alwaysVisibleButton") == "true") {
if (sGet("alwaysVisibleButton") == "true") {
eid("alwaysVisibleButton").checked = true;
eid("download-button").value = '>>'
eid("download-button").style.padding = '0 1rem';
}
if (localStorage.getItem("downloadPopup") == "true" && !isIOS) {
if (sGet("downloadPopup") == "true" && !isIOS) {
eid("downloadPopup").checked = true;
}
if (!localStorage.getItem("audioMode")) {
if (!sGet("audioMode")) {
toggle("audioMode")
}
updateToggle("audioMode", localStorage.getItem("audioMode"))
if (sGet("disableTikTokWatermark") == "true") {
eid("disableTikTokWatermark").checked = true;
}
updateToggle("audioMode", sGet("audioMode"));
for (let i in switchers) {
changeSwitcher(i, localStorage.getItem(i))
changeSwitcher(i, sGet(i))
}
}
function checkbox(action) {
if (eid(action).checked) {
localStorage.setItem(action, "true");
sSet(action, "true");
if (action == "alwaysVisibleButton") button();
} else {
localStorage.setItem(action, "false");
sSet(action, "false");
if (action == "alwaysVisibleButton") button();
}
}
function toggle(toggle) {
let state = localStorage.getItem(toggle);
let state = sGet(toggle);
if (state) {
localStorage.setItem(toggle, opposite(state))
sSet(toggle, opposite(state))
} else {
localStorage.setItem(toggle, "false")
sSet(toggle, "false")
}
updateToggle(toggle, localStorage.getItem(toggle))
updateToggle(toggle, sGet(toggle))
}
function updateToggle(toggle, state) {
switch(state) {
@@ -206,10 +215,19 @@ function updateToggle(toggle, state) {
async function download(url) {
changeDownloadButton(2, '...');
eid("url-input-area").disabled = true;
let audioMode = localStorage.getItem("audioMode");
let format = (url.includes("youtube.com/") && audioMode == "false" || url.includes("/youtu.be/") && audioMode == "false") ? `&format=${localStorage.getItem("ytFormat")}` : '';
let mode = (localStorage.getItem("audioMode") == "true") ? `audio=true` : `quality=${localStorage.getItem("quality")}`;
fetch(`/api/json?audioFormat=${localStorage.getItem("audioFormat")}&${mode}${format}&url=${encodeURIComponent(url)}`).then(async (response) => {
let audioMode = sGet("audioMode");
let format = ``;
if (audioMode == "false") {
if (url.includes("youtube.com/") || url.includes("/youtu.be/")) {
format = `&format=${sGet("ytFormat")}`
} else if ((url.includes("tiktok.com/") || url.includes("douyin.com/")) && sGet("disableTikTokWatermark") == "true") {
format = `&nw=true`
}
} else {
format = `&nw=true`
}
let mode = (sGet("audioMode") == "true") ? `audio=true` : `quality=${sGet("quality")}`
fetch(`/api/json?audioFormat=${sGet("audioFormat")}&${mode}${format}&url=${encodeURIComponent(url)}`).then(async (response) => {
let j = await response.json();
if (j.status != "error" && j.status != "rate-limit") {
if (j.url) {
@@ -220,7 +238,7 @@ async function download(url) {
changeDownloadButton(1, '>>')
eid("url-input-area").disabled = false
}, 3000)
if (localStorage.getItem("downloadPopup") == "true") {
if (sGet("downloadPopup") == "true") {
popup('download', 1, j.url)
} else {
window.open(j.url, '_blank');
@@ -264,12 +282,17 @@ window.onload = () => {
eid("cobalt-main-box").style.visibility = 'visible';
eid("footer").style.visibility = 'visible';
eid("url-input-area").value = "";
if (!localStorage.getItem("seenAbout")) {
if (!sGet("seenAbout")) {
popup('about', 1, "about");
} else if (localStorage.getItem("changelogStatus") != `${version}` && localStorage.getItem("disableChangelog") != "true") {
} else if (sGet("changelogStatus") != `${version}` && sGet("disableChangelog") != "true") {
popup('about', 1, "changelog");
}
if (isIOS) localStorage.setItem("downloadPopup", "true");
if (isIOS) sSet("downloadPopup", "true");
let urlQuery = new URLSearchParams(window.location.search).get("u");
if (urlQuery != null) {
eid("url-input-area").value = urlQuery;
button();
}
}
eid("url-input-area").addEventListener("keyup", (event) => {
if (event.key === 'Enter') eid("download-button").click();