Files
YoutubeDL-Material/backend/main.js
2023-04-17 22:51:33 -04:00

87 lines
1.9 KiB
JavaScript

const { app, BrowserWindow } = require('electron');
const path = require('path');
const { spawn } = require('child_process');
let win;
let splashWindow;
function createSplashWindow() {
splashWindow = new BrowserWindow({
width: 800,
height: 600,
frame: false,
alwaysOnTop: true,
webPreferences: {
nodeIntegration: true
}
})
splashWindow.loadFile('public/assets/splash.html')
splashWindow.on('closed', () => {
splashWindow = null
})
}
function createMainWindow() {
win = new BrowserWindow(
{
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: true,
preload: path.join(__dirname, 'preload.js')
},
icon: path.join(__dirname, 'favicon.ico'),
show: false
});
// The following is optional and will open the DevTools:
// win.webContents.openDevTools()
win.on('closed', () => {
win = null;
});
}
function createWindow() {
const serverProcess = spawn('node', [path.join(__dirname, 'app.js')]); //, {cwd: 'backend'});
createMainWindow();
createSplashWindow();
// Log the server output to the console
serverProcess.stdout.on('data', (data) => {
if (data.toString().includes('started on PORT')) {
splashWindow.close()
// load the dist folder from Angular
win.loadURL('http://localhost:17442')
win.show()
}
console.log(`Server output: ${data}`);
});
// Log any errors to the console
serverProcess.stderr.on('data', (data) => {
console.error(`Server error: ${data}`);
});
process.on('uncaughtException', (error) => {
console.error('Uncaught exception:', error);
});
}
app.on('ready', createWindow);
// on macOS, closing the window doesn't quit the app
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
// initialize the app's main window
app.on('activate', () => {
if (win === null) {
createWindow();
}
});