/**
 * @author ${|author|}
 * @overview generated by ghoti-cli
 * @fileoverview Electron browserwindow ${|name|}
 */

import { BrowserWindow, ipcMain, Menu, webContents } from "electron";
import Config from "../config/config";

import template from './menu';

let ${|name|}Window: BrowserWindow;
let ${|name|}Event: webContents;

const register${|name|}: (event: { sender: webContents }, arg: string) => void = (event: { sender: webContents }, arg: string) => {
    ${|name|}Event = event.sender;
};

export const create${|name|}: () => void = () => {
    if (Config.isDebug) {
        ${|name|}Window = new BrowserWindow({
            width: 1200,
            height: 1020,
            show: false,
            backgroundColor: Config.backgroundColor,
        });
        ${|name|}Window.loadURL("http://localhost:8080");
        ${|name|}Window.webContents.openDevTools();
    } else {
        ${|name|}Window = new BrowserWindow({
            width: 765,
            height: 1020,
            show: false,
            backgroundColor: Config.backgroundColor,
        });
        ${|name|}Window.loadURL(`file://${__dirname}/../renderer/index.html`);
        const menu = Menu.buildFromTemplate(template);
        Menu.setApplicationMenu(menu);
    }

    ipcMain.on('register-${|name|}', register${|name|});

    ${|name|}Window.on("closed", (): void => {
        ${|name|}Window = null;
        ipcMain.removeListener('register-${|name|}', register${|name|});
    });

    ${|name|}Window.on("ready-to-show", (): void => {
        ${|name|}Window.show();
        ${|name|}Window.focus();
    });
};

export const destroy${|name|}: () => void = () => {
    ${|name|}Window.close();
};

export const get${|name|}: () => BrowserWindow = () => {
    return ${|name|}Window;
};

export const getWebContent${|name|}: () => webContents = () => {
    return ${|name|}Event;
};
