silver-mc-java-core
Version:
A library starting minecraft game NW.js and Electron.js
60 lines (54 loc) • 2.16 kB
text/typescript
/**
* @author Luuxis
* @license CC-BY-NC 4.0 - https://creativecommons.org/licenses/by-nc/4.0/
*/
const path = require('path')
const { app, BrowserWindow, session } = require('electron')
const defaultProperties = {
width: 1000,
height: 650,
resizable: false,
center: true,
icon: path.join(__dirname, '../../../assets/icons', `Microsoft.${(process.platform === 'win32') ? 'ico' : 'png'}`),
}
module.exports = async function (url: string) {
await new Promise((resolve: any) => {
app.whenReady().then(() => {
session.defaultSession.cookies.get({ domain: 'live.com' }).then((cookies: any) => {
for (let cookie of cookies) {
let urlcookie = `http${cookie.secure ? "s" : ""}://${cookie.domain.replace(/$\./, "") + cookie.path}`;
session.defaultSession.cookies.remove(urlcookie, cookie.name)
}
})
return resolve();
})
})
return new Promise(resolve => {
app.whenReady().then(() => {
const mainWindow = new BrowserWindow(defaultProperties)
mainWindow.setMenu(null);
mainWindow.loadURL(url);
var loading = false;
mainWindow.on("close", () => {
if (!loading) resolve("cancel");
})
mainWindow.webContents.on("did-finish-load", () => {
const loc = mainWindow.webContents.getURL();
if (loc.startsWith("https://login.live.com/oauth20_desktop.srf")) {
const urlParams = new URLSearchParams(loc.substr(loc.indexOf("?") + 1)).get("code");
if (urlParams) {
resolve(urlParams);
loading = true;
} else {
resolve("cancel");
}
try {
mainWindow.close();
} catch {
console.error("Failed to close window!");
}
}
})
})
})
}