index.js

/**
 * @file index.js es el punto de entrada de la aplicacion.
 * @author bran-bit-lab
 * @author gabmart1995
 * @see <a href="https://github.com/bran-bit-lab">Brandon Silva (bran-bit-lab)</a>
 * @see <a href="https://gabmart1995.github.io">Gabriel Martinez (gabmart1995)</a>
 */

'use strict'
const { app, BrowserWindow } = require('electron');
const { Database } = require('./database/database');
const { ENV } = require('./env');

if ( ENV.DEV ) {
    require('electron-reload')( __dirname );
}

/** funcion principal para crear la ventana principal de electronJS */
function createWindow() {
    
    // custom user interfaces
    const { join } = require('path');
    const { initMainMenu } = require('./user-interfaces/menu/menu');

    const win = new BrowserWindow({
        width: 800,
        height: 600,
        minHeight: 600,
        minWidth: 800,
        webPreferences: {
            nodeIntegration: true,
            enableRemoteModule: true,
        },
        show: false
    });

    // carga los datos
    win.loadFile( join( ENV.PATH_VIEWS, 'login', 'login.html' ) );

    win.once('ready-to-show', () => {
        initMainMenu( ENV.DEV );
        Database.connect();
        win.show();
    });
    
    // win.webContents.openDevTools();
}

app.whenReady().then( createWindow );

//metodo para salir de la aplicacion cuando todas las ventanas estan cerradas

/* condicional pregunta cual es la plataforma actual, darwin significa Mac OS, win32 significa
windows sea 32 o 64 bits */

app.on('window-all-closed', () => {

    if ( process.platform !== 'darwin' ) {
        app.quit();
    }

    // close the connection
    Database.closeConnection();
});

//crea nueva ventana de navegador mientras la app esta activa y no hallan ventanas visibles
app.on('activate', () => {

    if ( BrowserWindow.getAllWindows().length === 0 ) {
        createWindow();
    }
});