dont work on cf
This commit is contained in:
359
js/loader.js
359
js/loader.js
@ -3,184 +3,195 @@ let elements = [];
|
|||||||
let isDev = [];
|
let isDev = [];
|
||||||
let pageData;
|
let pageData;
|
||||||
async function loadGames() {
|
async function loadGames() {
|
||||||
if(type == "g") pageData = {path: "/resources/games.json", prefix: "semag", type: "g"}
|
if (type == "g") pageData = { path: "/resources/games.json", prefix: "semag", type: "g" };
|
||||||
else if(type == "a") pageData = {path: "/resources/apps.json", prefix: "sppa", type: "a"}
|
else if (type == "a") pageData = { path: "/resources/apps.json", prefix: "sppa", type: "a" };
|
||||||
else sAlert("this is not valid");
|
else sAlert("this is not valid");
|
||||||
// taken from mdn
|
// taken from mdn
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
|
||||||
let data = await (await fetch(pageData.path)).json();
|
let data = await (await fetch(pageData.path)).json();
|
||||||
let sorted = data.sort((a, b) => {
|
let sorted = data.sort((a, b) => {
|
||||||
const n1 = a.name.toUpperCase();
|
const n1 = a.name.toUpperCase();
|
||||||
const n2 = b.name.toUpperCase();
|
const n2 = b.name.toUpperCase();
|
||||||
if (n1 < n2) {
|
if (n1 < n2) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
if (n1 > n2) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
// shouldnt happen but just incase
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
let gamesElement = document.getElementById("games");
|
|
||||||
let topGElement = document.getElementById("topGames");
|
|
||||||
|
|
||||||
let gamesFragment = document.createDocumentFragment();
|
|
||||||
let topFragment = document.createDocumentFragment();
|
|
||||||
let starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
|
||||||
sorted.forEach(element => {
|
|
||||||
isStarred = starredGames.indexOf(element.directory) != -1;
|
|
||||||
let newElement = document.createElement("a");
|
|
||||||
newElement.setAttribute("data-target", element.directory);
|
|
||||||
newElement.setAttribute("data-image", element.image);
|
|
||||||
newElement.setAttribute("class", "game");
|
|
||||||
newElement.setAttribute("href", `/loader.html?title=${encodeURIComponent(element.name)}&dir=${element.directory}&img=${element.image}&type=${pageData.type}`);
|
|
||||||
let image = document.createElement("img");
|
|
||||||
image.src = `/resources/${pageData.prefix}/${element.directory}/${element.image}`;
|
|
||||||
image.loading = `lazy`;
|
|
||||||
image.onerror = function() {this.src="/img/missing.svg"};
|
|
||||||
let holder = document.createElement("div");
|
|
||||||
holder.id = "holder";
|
|
||||||
let title = document.createElement("h1");
|
|
||||||
title.innerText = element.name;
|
|
||||||
let star = document.createElement("img");
|
|
||||||
star.id = "star";
|
|
||||||
star.classList = "star";
|
|
||||||
star.src = isStarred ? "/img/star-fill.svg" : "/img/star.svg";
|
|
||||||
let warnings = document.createElement("warnings");
|
|
||||||
newElement.appendChild(image);
|
|
||||||
holder.appendChild(title);
|
|
||||||
newElement.appendChild(holder);
|
|
||||||
newElement.appendChild(warnings);
|
|
||||||
if(element.tags) {
|
|
||||||
if(element.tags.includes("18+")) {
|
|
||||||
let thirteenplus = document.createElement("warning");
|
|
||||||
thirteenplus.innerText = "18+";
|
|
||||||
thirteenplus.classList = "thirteen";
|
|
||||||
warnings.appendChild(thirteenplus);
|
|
||||||
}
|
|
||||||
if(element.tags.includes("13+")) {
|
|
||||||
let thirteenplus = document.createElement("warning");
|
|
||||||
thirteenplus.innerText = "13+";
|
|
||||||
thirteenplus.classList = "thirteen";
|
|
||||||
warnings.appendChild(thirteenplus);
|
|
||||||
}
|
|
||||||
if(element.tags.includes("horror")) {
|
|
||||||
let horror = document.createElement("warning");
|
|
||||||
horror.innerText = "😱";
|
|
||||||
horror.classList = "horror";
|
|
||||||
warnings.appendChild(horror);
|
|
||||||
}
|
|
||||||
if(element.tags.includes("gore")) {
|
|
||||||
let gore = document.createElement("warning");
|
|
||||||
gore.innerText = "🩸";
|
|
||||||
gore.classList = "gore";
|
|
||||||
warnings.appendChild(gore);
|
|
||||||
}
|
|
||||||
if(element.tags.includes("top") && localStorage.getItem("selenite.disableTopGames") != "false") {
|
|
||||||
topFragment.appendChild(newElement);
|
|
||||||
} else {
|
|
||||||
gamesFragment.appendChild(newElement);
|
|
||||||
holder.appendChild(star);
|
|
||||||
}
|
|
||||||
if(element.tags.includes("tofinish")) isDev.push(element.directory);
|
|
||||||
} else {
|
|
||||||
gamesFragment.appendChild(newElement);
|
|
||||||
holder.appendChild(star);
|
|
||||||
}
|
|
||||||
elements.push(newElement);
|
|
||||||
star.addEventListener("click", (e) => {
|
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
starEvent(e);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
gamesElement.appendChild(gamesFragment);
|
|
||||||
topGElement.appendChild(topFragment);
|
|
||||||
document.getElementById("gameCount").innerText = `${data.length} games loaded!`;
|
|
||||||
document.getElementById("loadingMsg").style.display = "none";
|
|
||||||
document.getElementById("allHeader").style.display = "block";
|
|
||||||
if(localStorage.getItem("selenite.disableTopGames") != "false") {
|
|
||||||
document.getElementById("topHeader").style.display = "block";
|
|
||||||
}
|
|
||||||
if(isDev.length > 0) {sAlert("wip games", "dev message, shouldnt be seen");console.log(isDev.join(","))};
|
|
||||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
|
||||||
if(starredGames.length > 0) {
|
|
||||||
document.getElementById("starredHeader").style.display = "block";
|
|
||||||
starredGames.forEach((e) => {
|
|
||||||
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
|
||||||
let newElement = element.cloneNode(true);
|
|
||||||
document.getElementById("starredgames").appendChild(newElement);
|
|
||||||
});
|
|
||||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
|
||||||
e.addEventListener("click", (e) => {
|
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
starEvent(e);
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
document.addEventListener("DOMContentLoaded", ()=>{
|
|
||||||
document.getElementById("gamesearch").addEventListener("input", ()=>{
|
|
||||||
let input = document.getElementById("gamesearch").value.toUpperCase();
|
|
||||||
let total = 0;
|
|
||||||
if(elements.length > 0) {
|
|
||||||
elements.forEach((element) => {
|
|
||||||
let title = element.childNodes[1].childNodes[0].innerText.toUpperCase();
|
|
||||||
if(title.includes(input)) {
|
|
||||||
element.style.display = "flex";
|
|
||||||
} else {
|
|
||||||
element.style.display = "none";
|
|
||||||
total++;
|
|
||||||
}
|
}
|
||||||
})
|
if (n1 > n2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
// shouldnt happen but just incase
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
let gamesElement = document.getElementById("games");
|
||||||
|
let topGElement = document.getElementById("topGames");
|
||||||
|
|
||||||
|
let gamesFragment = document.createDocumentFragment();
|
||||||
|
let topFragment = document.createDocumentFragment();
|
||||||
|
let starredGames = JSON.parse(localStorage.getItem("selenite.starred") || "[]");
|
||||||
|
sorted.forEach((element) => {
|
||||||
|
isStarred = starredGames.indexOf(element.directory) != -1;
|
||||||
|
let newElement = document.createElement("a");
|
||||||
|
newElement.setAttribute("data-target", element.directory);
|
||||||
|
newElement.setAttribute("data-image", element.image);
|
||||||
|
newElement.setAttribute("class", "game");
|
||||||
|
newElement.setAttribute("href", `/loader.html?title=${encodeURIComponent(element.name)}&dir=${element.directory}&img=${element.image}&type=${pageData.type}`);
|
||||||
|
let image = document.createElement("img");
|
||||||
|
image.src = `/resources/${pageData.prefix}/${element.directory}/${element.image}`;
|
||||||
|
image.loading = `lazy`;
|
||||||
|
image.onerror = function () {
|
||||||
|
this.src = "/img/missing.svg";
|
||||||
|
};
|
||||||
|
let holder = document.createElement("div");
|
||||||
|
holder.id = "holder";
|
||||||
|
let title = document.createElement("h1");
|
||||||
|
title.innerText = element.name;
|
||||||
|
let star = document.createElement("img");
|
||||||
|
star.id = "star";
|
||||||
|
star.classList = "star";
|
||||||
|
star.src = isStarred ? "/img/star-fill.svg" : "/img/star.svg";
|
||||||
|
let warnings = document.createElement("warnings");
|
||||||
|
newElement.appendChild(image);
|
||||||
|
holder.appendChild(title);
|
||||||
|
newElement.appendChild(holder);
|
||||||
|
newElement.appendChild(warnings);
|
||||||
|
if (element.tags) {
|
||||||
|
if (element.tags.includes("18+")) {
|
||||||
|
let thirteenplus = document.createElement("warning");
|
||||||
|
thirteenplus.innerText = "18+";
|
||||||
|
thirteenplus.classList = "thirteen";
|
||||||
|
warnings.appendChild(thirteenplus);
|
||||||
|
}
|
||||||
|
if (element.tags.includes("13+")) {
|
||||||
|
let thirteenplus = document.createElement("warning");
|
||||||
|
thirteenplus.innerText = "13+";
|
||||||
|
thirteenplus.classList = "thirteen";
|
||||||
|
warnings.appendChild(thirteenplus);
|
||||||
|
}
|
||||||
|
if (element.tags.includes("horror")) {
|
||||||
|
let horror = document.createElement("warning");
|
||||||
|
horror.innerText = "😱";
|
||||||
|
horror.classList = "horror";
|
||||||
|
warnings.appendChild(horror);
|
||||||
|
}
|
||||||
|
if (element.tags.includes("gore")) {
|
||||||
|
let gore = document.createElement("warning");
|
||||||
|
gore.innerText = "🩸";
|
||||||
|
gore.classList = "gore";
|
||||||
|
warnings.appendChild(gore);
|
||||||
|
}
|
||||||
|
if (element.tags.includes("top") && localStorage.getItem("selenite.disableTopGames") != "false") {
|
||||||
|
topFragment.appendChild(newElement);
|
||||||
|
} else {
|
||||||
|
gamesFragment.appendChild(newElement);
|
||||||
|
holder.appendChild(star);
|
||||||
|
}
|
||||||
|
if (element.tags.includes("wip")) {
|
||||||
|
isDev.push(element.directory);
|
||||||
|
let thirteenplus = document.createElement("warning");
|
||||||
|
thirteenplus.innerText = "WIP";
|
||||||
|
thirteenplus.classList = "thirteen";
|
||||||
|
warnings.appendChild(thirteenplus);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
gamesFragment.appendChild(newElement);
|
||||||
|
holder.appendChild(star);
|
||||||
|
}
|
||||||
|
elements.push(newElement);
|
||||||
|
star.addEventListener("click", (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
starEvent(e);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
gamesElement.appendChild(gamesFragment);
|
||||||
|
topGElement.appendChild(topFragment);
|
||||||
|
document.getElementById("gameCount").innerText = `${data.length} games loaded!`;
|
||||||
|
document.getElementById("loadingMsg").style.display = "none";
|
||||||
|
document.getElementById("allHeader").style.display = "block";
|
||||||
|
if (localStorage.getItem("selenite.disableTopGames") != "false") {
|
||||||
|
document.getElementById("topHeader").style.display = "block";
|
||||||
}
|
}
|
||||||
document.getElementById("noResults").style.display = total >= elements.length ? "flex" : "none"
|
if (isDev.length > 0) {
|
||||||
})
|
sAlert("wip games", "dev message, shouldnt be seen");
|
||||||
|
console.log(isDev.join(","));
|
||||||
|
}
|
||||||
|
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || "[]");
|
||||||
|
if (starredGames.length > 0) {
|
||||||
|
document.getElementById("starredHeader").style.display = "block";
|
||||||
|
starredGames.forEach((e) => {
|
||||||
|
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
||||||
|
let newElement = element.cloneNode(true);
|
||||||
|
document.getElementById("starredgames").appendChild(newElement);
|
||||||
|
});
|
||||||
|
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||||
|
e.addEventListener("click", (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
starEvent(e);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
document.getElementById("gamesearch").addEventListener("input", () => {
|
||||||
|
let input = document.getElementById("gamesearch").value.toUpperCase();
|
||||||
|
let total = 0;
|
||||||
|
if (elements.length > 0) {
|
||||||
|
elements.forEach((element) => {
|
||||||
|
let title = element.childNodes[1].childNodes[0].innerText.toUpperCase();
|
||||||
|
if (title.includes(input)) {
|
||||||
|
element.style.display = "flex";
|
||||||
|
} else {
|
||||||
|
element.style.display = "none";
|
||||||
|
total++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
document.getElementById("noResults").style.display = total >= elements.length ? "flex" : "none";
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function starEvent(e) {
|
function starEvent(e) {
|
||||||
let game = e.target.parentNode.parentNode.getAttribute("data-target");
|
let game = e.target.parentNode.parentNode.getAttribute("data-target");
|
||||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || "[]");
|
||||||
if(starredGames.indexOf(game) == -1) {
|
if (starredGames.indexOf(game) == -1) {
|
||||||
starredGames.push(game);
|
starredGames.push(game);
|
||||||
starredGames.sort();
|
starredGames.sort();
|
||||||
if(starredGames.length > 0) {
|
if (starredGames.length > 0) {
|
||||||
document.getElementById("starredHeader").style.display = "block";
|
document.getElementById("starredHeader").style.display = "block";
|
||||||
|
} else {
|
||||||
|
document.getElementById("starredHeader").style.display = "none";
|
||||||
|
}
|
||||||
|
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||||
|
e.target.src = "/img/star-fill.svg";
|
||||||
|
starredgames.innerHTML = "";
|
||||||
|
starredGames.forEach((e) => {
|
||||||
|
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
||||||
|
let newElement = element.cloneNode(true);
|
||||||
|
document.getElementById("starredgames").appendChild(newElement);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
document.getElementById("starredHeader").style.display = "none";
|
starredGames.splice(starredGames.indexOf(game), 1);
|
||||||
|
document.querySelectorAll(`a.game[data-target='${game}'] #star`).forEach((e) => {
|
||||||
|
e.src = "/img/star.svg";
|
||||||
|
});
|
||||||
|
if (starredGames.length > 0) {
|
||||||
|
document.getElementById("starredHeader").style.display = "block";
|
||||||
|
} else {
|
||||||
|
document.getElementById("starredHeader").style.display = "none";
|
||||||
|
}
|
||||||
|
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||||
|
starredgames.innerHTML = "";
|
||||||
|
starredGames.forEach((e) => {
|
||||||
|
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
||||||
|
let newElement = element.cloneNode(true);
|
||||||
|
document.getElementById("starredgames").appendChild(newElement);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||||
e.target.src = "/img/star-fill.svg";
|
e.addEventListener("click", (e) => {
|
||||||
starredgames.innerHTML = "";
|
e.preventDefault();
|
||||||
starredGames.forEach((e) => {
|
e.stopPropagation();
|
||||||
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
starEvent(e);
|
||||||
let newElement = element.cloneNode(true);
|
});
|
||||||
document.getElementById("starredgames").appendChild(newElement);
|
});
|
||||||
})
|
}
|
||||||
} else {
|
|
||||||
starredGames.splice(starredGames.indexOf(game), 1);
|
|
||||||
document.querySelectorAll(`a.game[data-target='${game}'] #star`).forEach((e) => {
|
|
||||||
e.src = "/img/star.svg";
|
|
||||||
})
|
|
||||||
if(starredGames.length > 0) {
|
|
||||||
document.getElementById("starredHeader").style.display = "block";
|
|
||||||
} else {
|
|
||||||
document.getElementById("starredHeader").style.display = "none";
|
|
||||||
}
|
|
||||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
|
||||||
starredgames.innerHTML = "";
|
|
||||||
starredGames.forEach((e) => {
|
|
||||||
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
|
||||||
let newElement = element.cloneNode(true);
|
|
||||||
document.getElementById("starredgames").appendChild(newElement);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
|
||||||
e.addEventListener("click", (e) => {
|
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
starEvent(e);
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|||||||
@ -57,9 +57,13 @@ async function caching() {
|
|||||||
if(sessionStorage.getItem("cdns")) return "done";
|
if(sessionStorage.getItem("cdns")) return "done";
|
||||||
let cdns = JSON.parse(atob("WyJodHRwczovL2NhY2hpbmcuZnJlZXRscy5mYXN0bHkubmV0IiwiaHR0cHM6Ly9jYWNoaW5nLmdsb2JhbC5zc2wuZmFzdGx5Lm5ldCJd"));
|
let cdns = JSON.parse(atob("WyJodHRwczovL2NhY2hpbmcuZnJlZXRscy5mYXN0bHkubmV0IiwiaHR0cHM6Ly9jYWNoaW5nLmdsb2JhbC5zc2wuZmFzdGx5Lm5ldCJd"));
|
||||||
let goods = [];
|
let goods = [];
|
||||||
|
let cfStatus = (await fetch("/alive.txt")).headers.get("Cf-Ray") != null;
|
||||||
|
if(cfStatus) {
|
||||||
|
localStorage.setItem("selenite.disableCDN", "true");
|
||||||
|
return;
|
||||||
|
}
|
||||||
for(let i = 0;i<cdns.length;i++) {
|
for(let i = 0;i<cdns.length;i++) {
|
||||||
let cdn = cdns[i];
|
let cdn = cdns[i];
|
||||||
// TODO: change to alive.txt
|
|
||||||
await fetch(cdn + "/alive.txt")
|
await fetch(cdn + "/alive.txt")
|
||||||
.then(data => data.text())
|
.then(data => data.text())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
|
|||||||
Reference in New Issue
Block a user