// cookie parser function
function getCookies () {
return Object.fromEntries(document.cookie.split(/\s{0,};\s{0,}/gmiu).map(i => i.split(/\s{0,}=\s{0,}/gmiu)));
}
// translate function
function translate (page) {
[...document.getElementsByClassName("translate")].forEach(translateEl => {
// console.log(translateEl.id);
const result = tr(page, translateEl.id);
// console.log(result);
if (result)
translateEl.innerHTML = result;
});
[...document.getElementsByClassName("linked-btn")].forEach(el => {
el.style.cursor = "pointer";
});
}
// load styles
document.head.innerHTML += '\\n ';
document.head.innerHTML += '\\n ';
document.head.innerHTML += '\\n ';
document.head.innerHTML += '\\n '
// load main page
document.body.innerHTML = `
`;
function checkContentWarning (successfulHandler) {
const warnModal = new bootstrap.Modal(document.getElementById('warningModal'), {});
document.getElementById('accept-denial-btn').onclick = () => {
document.cookie = "cw=1";
successfulHandler?.();
};
const cookies = getCookies();
if (!cookies.cw) {
warnModal.show();
} else {
successfulHandler?.();
}
}
// Fl Handlers
fl.bindLoad("/connect", () => {
translate("/connect");
function connectServers () {
document.getElementById("loading-servers").innerHTML = `${tr("/connect", "loading") ?? "Loading..."}
`;
const xhr = new XMLHttpRequest();
xhr.open("GET", "/api/active-servers.json", true);
xhr.onerror = () => {
document.getElementById("loading-servers").innerHTML = `
${tr("/connect", "connection-failed") ?? "Connection failed"}
`;
document.getElementById("retry-connecting").onclick = () => connectServers();
}
xhr.onload = async () => {
if (xhr.status === 200) {
const servers = JSON.parse(xhr.response).result;
const items = [];
const itemIDs = [];
const mp = servers.map(async serverItem => {
const promise = new Promise((resolve, reject) => {
console.log("serverItem:", serverItem);
const socket = new WebSocket(`ws://${serverItem.address}:${serverItem.port}`);
let ping = new Date();
socket.onopen = () => {
ping = (new Date()) - ping;
socket.onmessage = (ev) => {
const data = JSON.parse(ev.data).result;
itemIDs.push({
...data,
itemID: `con-btn-to:${data.tag}:${serverItem.address}:${serverItem.port}`
});
resolve(items.push(`
${data.name} |
${serverItem.address}:${serverItem.port} |
${!data.secureMode ? '' : ''} |
${ping} |
|
`));
};
socket.send(JSON.stringify({
method: "info"
}));
};
socket.onerror = (err) => {
console.error(err);
resolve(items.push(`
${tr("/connect", "offline-server") ?? "Offline"} |
${serverItem.address}:${serverItem.port} |
|
${tr("/connect", "offline-server") ?? "Offline"} |
|
`));
};
});
return await promise;
});
await Promise.all(mp);
items.push(` |
`);
document.getElementById("loading-servers").innerHTML = `
${tr("/connect", "server-name-tbl") ?? "Name"} |
${tr("/connect", "server-address") ?? "Address"} |
${tr("/connect", "server-encryption") ?? "Encrypted"} |
${tr("/connect", "server-ping") ?? "Ping"} |
${tr("/connect", "server-action") ?? "Action"} |
${items.join("\n")}
`;
itemIDs.forEach(btn => {
document.getElementById(btn.itemID).onclick = () => {
checkContentWarning();
};
});
}
};
xhr.send();
}
const cookies = getCookies();
console.log(cookies);
const cookiesModal = new bootstrap.Modal(document.getElementById('cookiesModal'), {});
if (!cookies.accept_cookies) {
cookiesModal.show();
} else {
connectServers();
}
document.getElementById("accept-cookie-btn").onclick = () => {
document.cookie = "accept_cookies=1";
connectServers();
};
/*document.getElementById("enable-cookie-cnt").onclick = () => {
cookiesModal.show();
};*/
});
fl.bindLoad("", () => {
translate("/");
// carousel
function onMouse (condition) {
return;
[...document.getElementsByClassName("card-img")].forEach(img => {
img.style.filter = `blur(${!condition ? 5 : 0}px)`;
});
}
onMouse(false);
[...document.getElementsByClassName("carousel-item")].forEach(item => {
item.onmouseout = () => onMouse(false);
item.onmouseover = () => onMouse(true);
});
[...document.getElementsByClassName("btn-card")].forEach(item => {
item.onmouseout = () => onMouse(true);
item.onmouseover = () => onMouse(false);
});
const interval = setInterval(() => {
const navbarHeight = +(document.getElementById("navbar-main")?.offsetHeight);
/*if (document.getElementById('main_img1')?.src) {
document.getElementById('main_img1').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/1.png" : "/assets/hello/m/1.png";
document.getElementById('main_img2').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/2.png" : "/assets/hello/m/2.png";
document.getElementById('main_img3').src = window.screen.availWidth / window.screen.availHeight > 1.45 ? "/assets/hello/3.png" : "/assets/hello/m/3.png";
}*/
const selectedCSS = Object.entries(document.styleSheets).filter(([key, cssFileObject]) => cssFileObject.href === `${location.origin}/css/main.css`)[0][1];
Object.entries(selectedCSS.rules).filter(([key, rule]) => rule.selectorText == '.carousel > .carousel-inner > .carousel-item > img')[0][1].style.height = `calc(100vh - ${navbarHeight}px)`;
// console.log('ok');
}, 1);
fl.bindUnload("/", () => {
clearInterval(interval);
});
});
// Go to current page
fl.goJust(window.location.pathname);