mirror of
https://github.com/TheGreyDiamond/Enlight.git
synced 2025-07-17 20:33:48 +02:00
221 lines
5.9 KiB
JavaScript
221 lines
5.9 KiB
JavaScript
const { app, BrowserWindow, screen, ipcMain, BrowserView } = require("electron");
|
|
const fs = require("fs");
|
|
const { win32 } = require("path");
|
|
const sysInf = require("systeminformation");
|
|
|
|
var aWin2 = undefined;
|
|
|
|
var preLoadedAmount = 0;
|
|
|
|
var networkInterfaces = [];
|
|
|
|
/// !!!-----------!!!
|
|
/// PAGE LOOKUP TABLE
|
|
var preloadedPageLookup = {};
|
|
|
|
var pageLookup = {};
|
|
pageLookup["index"] = "index.html";
|
|
pageLookup["session"] = "sessions.html";
|
|
pageLookup["header"] = "header.html"
|
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(pageLookup)) {
|
|
// check if the property/key is defined in the object itself, not in parent
|
|
if (pageLookup.hasOwnProperty(key)) {
|
|
fs.readFile('ui_templates/' + value, 'utf8', function (err,data) {
|
|
preLoadedAmount++;
|
|
if (err) {
|
|
return console.log(err);
|
|
}
|
|
preloadedPageLookup[key] = data;
|
|
|
|
});
|
|
}
|
|
}
|
|
|
|
function loadPage(name){
|
|
load = preloadedPageLookup[name]
|
|
if(load == undefined){
|
|
load = fs.readFileSync("ui_templates/" + pageLookup[name]).toString();
|
|
console.warn("Loading fallback for page " + name);
|
|
}
|
|
return(load)
|
|
}
|
|
|
|
/*
|
|
fs.readFile('ui_templates/index.html', 'utf8', function (err,data) {
|
|
preLoadedAmount++;
|
|
if (err) {
|
|
return console.log(err);
|
|
}
|
|
preloadedPageLookup["index"] = data;
|
|
});
|
|
*/
|
|
function createWindow() {
|
|
const win = new BrowserWindow({
|
|
width: screen.getPrimaryDisplay().size.width,
|
|
height: screen.getPrimaryDisplay().size.height,
|
|
webPreferences: {
|
|
nodeIntegration: true,
|
|
},
|
|
});
|
|
win.setFullScreen(true);
|
|
win.setMenuBarVisibility(false);
|
|
win.setAutoHideMenuBar(true);
|
|
|
|
|
|
main = loadPage("index")
|
|
header = loadPage("header")
|
|
|
|
//
|
|
//header = fs.readFileSync("ui_templates/header.html").toString();
|
|
toLoad = header + main;
|
|
fs.writeFileSync("ui_templates/temp.html", toLoad)
|
|
//win.loadURL("data:text/html;charset=utf-8," + encodeURI(toLoad));
|
|
win.loadFile("ui_templates/temp.html")
|
|
return(win)
|
|
}
|
|
|
|
function createStartupInfo() {
|
|
const win2 = new BrowserWindow({
|
|
width: 400,
|
|
height: 200,
|
|
frame: false,
|
|
webPreferences: {
|
|
nodeIntegration: true,
|
|
},
|
|
});
|
|
|
|
win2.setFullScreen(false);
|
|
win2.setAlwaysOnTop(true);
|
|
win2.loadFile("ui_templates/startUp.html");
|
|
win2.show();
|
|
return win2;
|
|
}
|
|
|
|
function doneLoading() {
|
|
var fadeOutI = 1;
|
|
if(Object.keys(pageLookup).length == preLoadedAmount){
|
|
aWin2.webContents.executeJavaScript(
|
|
"document.getElementById('current').innerHTML = 'Done';"
|
|
);
|
|
var fadeIntervall = setInterval(function () {
|
|
try {
|
|
if (fadeOutI < 0) {
|
|
clearInterval(fadeIntervall);
|
|
aWin2.webContents.executeJavaScript("window.close()");
|
|
} else {
|
|
aWin2.setOpacity(fadeOutI);
|
|
fadeOutI = fadeOutI - 0.05;
|
|
}
|
|
} catch (e) {
|
|
console.warn("Startup window got destroyed!");
|
|
clearInterval(fadeIntervall);
|
|
}
|
|
}, 20);
|
|
}else{
|
|
console.warn("Had to reschedule load finish")
|
|
setTimeout(doneLoading, 200);
|
|
}
|
|
|
|
//aWin2.webContents.executeJavaScript("window.close()")
|
|
}
|
|
|
|
function init() {
|
|
win = createWindow();
|
|
aWin2 = createStartupInfo();
|
|
sysInf.networkInterfaces(function (data) {
|
|
networkInterfaces = data;
|
|
});
|
|
setInterval(function(){
|
|
sysInf.networkInterfaces(function (data) {
|
|
networkInterfaces = data;
|
|
});
|
|
}, 2 * 60 * 1000) // Update network interface every 2 mins
|
|
|
|
setTimeout(doneLoading, 2000);
|
|
ipcMain.on("asynchronous-message", (event, arg) => {
|
|
console.log(arg); // prints "ping"
|
|
if (arg == "hasBattery") {
|
|
event.reply("asynchronous-reply", sysInf.battery().hasbattery);
|
|
}
|
|
});
|
|
|
|
ipcMain.on("synchronous-message", (event, arg) => {
|
|
//console.log(arg) // prints "ping"
|
|
if (String(arg).includes("hasBattery")) {
|
|
sysInf.battery(function (data) {
|
|
event.returnValue = data.hasbattery;
|
|
//event.returnValue = true
|
|
});
|
|
}else if (String(arg).includes("getBatteryLevel")) {
|
|
sysInf.battery(function (data) {
|
|
//event.returnValue = 2
|
|
event.returnValue = data.percent;
|
|
});
|
|
}else if (String(arg).includes("loadOverride")) {
|
|
event.returnValue = false;
|
|
}else if (String(arg).includes("getNetworks")) {
|
|
|
|
/*sysInf.networkInterfaces(function (data) {
|
|
event.returnValue = data;
|
|
});*/
|
|
event.returnValue = networkInterfaces;
|
|
|
|
}else if (String(arg).includes("set:newNetwork")) {
|
|
fs.writeFile('usrStore/lastNetwork.data', String(arg).split("|")[1], function (err) {
|
|
if (err) return console.log(err);
|
|
console.log('Saved new main network');
|
|
});
|
|
event.returnValue = "";
|
|
} else if (String(arg).includes("getMainNetwork")) {
|
|
try{
|
|
last = fs.readFileSync("usrStore/lastNetwork.data")
|
|
console.log(last.toString())
|
|
event.returnValue = last.toString();
|
|
}catch(e){
|
|
sysInf.networkInterfaces(function (data) {
|
|
fs.writeFileSync("usrStore/lastNetwork.data", data[0].ifaceName);
|
|
event.returnValue = data[0].ifaceName
|
|
});
|
|
|
|
}
|
|
|
|
}else if (String(arg).includes("PAGE:change")) {
|
|
newPage = String(arg).split(".")[1]
|
|
main = header = loadPage(newPage)
|
|
|
|
header = loadPage("header")
|
|
toLoad = header + main;
|
|
console.log(toLoad)
|
|
const timestamp = Date.now();
|
|
fs.writeFileSync("ui_templates/temp.html", toLoad)
|
|
const timestamp2 = Date.now();
|
|
win.loadFile("ui_templates/temp.html")
|
|
const timestamp3 = Date.now();
|
|
//win.loadFile("ui_templates/header.html")
|
|
console.log("LOADTIMES: ", (timestamp2 - timestamp), (timestamp3 - timestamp2), (timestamp3 - timestamp))
|
|
|
|
|
|
event.returnValue = "";
|
|
}else{
|
|
event.returnValue = "ERR:UNKNOW_CMD"
|
|
}
|
|
});
|
|
}
|
|
|
|
app.whenReady().then(init);
|
|
|
|
app.on("window-all-closed", () => {
|
|
if (process.platform !== "darwin") {
|
|
app.quit();
|
|
}
|
|
});
|
|
|
|
app.on("activate", () => {
|
|
if (BrowserWindow.getAllWindows().length === 0) {
|
|
createWindow();
|
|
}
|
|
});
|