summaryrefslogblamecommitdiff
path: root/main.js
blob: 71c3456db0e9712609419c4d1f7256a2c3394be1 (plain) (tree)
1
2
3
4
5
6
7
8




                                                            


                                 



















                                                                                                                               


                                                                                         


                                                  









                                                         






                                                                            
                                                                 








                                                
                                                   







































                                                                      
   
const { app, BrowserWindow, Menu } = require('electron');
const path = require('path');

const config = require(path.join(__dirname, 'config.json'));

if (config.name)
	app.setName(config.name);

// Load flash
let flash;
if (process.arch !== 'x64')
	throw new Error('Only x64 architecture is supported.');
switch (process.platform) {
	case 'win32':
		flash = 'pepflashplayer.dll'; break;
	case 'darwin':
		flash = 'PepperFlashPlayer.plugin'; break;
	case 'linux':
		flash = 'libpepflashplayer.so'; break;
	default:
		throw new Error('Only Windows, macOS and Linux platforms are supported.');
}
let flashPath = path.join(__dirname, path.basename(__dirname) === 'resources' ? '../flash' : 'flash', process.platform, flash);
if (process.platform === 'linux')
	app.commandLine.appendSwitch('no-sandbox');
app.commandLine.appendSwitch('ppapi-flash-path', flashPath);
app.commandLine.appendSwitch('ppapi-flash-version', '32.0.0.371');

// Disable cache - might update something on the game side and just don't cache anything.
app.commandLine.appendSwitch('disable-http-cache');

// Menu
// https://www.electronjs.org/docs/latest/api/menu
const menuTemplate = [
	// macOS first menu is always the "app name" one.
	...(process.platform === 'darwin' ? [{
		label: app.name,
		submenu: [
			{ role: 'about' },
			{ type: 'separator' },
			{ role: 'quit' }
		]
	}] : []),

	{
		label: 'File',
		submenu: Object.keys(config.urls).map(urlName => ({
			label: 'Open ' + urlName,
			click: function(menuItem, browserWindow, event) {
				browserWindow.loadURL(config.urls[urlName]);
			}
		})).concat(process.platform === 'darwin' ? [] : [
			{ type: 'separator' },
			{ role: 'quit' }
		])
	},
	{
		label: 'View',
		submenu: [
			{ role: 'reload' },
			{ role: 'forceReload' },
			{ role: 'toggleDevTools' },
			{ type: 'separator' },
			{ role: 'resetZoom' },
			{ role: 'zoomIn' },
			{ role: 'zoomOut' },
			{ type: 'separator' },
			{ role: 'togglefullscreen' }
		]
	}
];
const menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);

// Basic auth if required
app.on('login', (event, webContents, details, authInfo, callback) => {
	event.preventDefault();
	callback(config.username, config.password);
});

const createWindow = () => {
	const win = new BrowserWindow({
		width: 1280,
		height: 720,
		useContentSize: true,
		autoHideMenuBar: true,
		webPreferences: {
			plugins: true
		}
	});

	win.loadURL(config.urls[Object.keys(config.urls)[0]]);
};

// On startup...
app.whenReady().then(() => {
	createWindow();
});

app.on('window-all-closed', () => {
	// Quit when all windows closed - even on macOS.
	app.quit()
});