import { app, BrowserWindow } from "electron";
import { get_setting } from "./src/setting";
import { create_server, start_server } from "./src/server";
const loading_html = `
react-sample
    
        Loading
        
    
`;
const setting = get_setting();
if (!setting.cli) {
  let window: BrowserWindow | null = null;
  const createWindow = async () => {
    window = new BrowserWindow({
      width: 800,
      height: 600,
      center: true,
      useContentSize: true,
    });
    await window.loadURL(`data:text/html;base64,`+Buffer.from(loading_html).toString('base64'));
    const server = await create_server();
    start_server(server);
    await window.loadURL(`http://localhost:${setting.port}`);
    window.on("closed", () => {
      window = null;
    });
  };
  const isPrimary = app.requestSingleInstanceLock();
  if (!isPrimary) {
    app.quit(); //exit window
    app.exit();
  }
  app.on("second-instance", () => {
    if (window != null) {
      if (window.isMinimized()) {
        window.restore();
      }
      window.focus();
    }
  });
  app.on("ready", (event, info) => {
    createWindow();
  });
  app.on("window-all-closed", () => { // quit when all windows are closed
    if (process.platform != "darwin") app.quit(); // (except leave MacOS app active until Cmd+Q)
  });
  app.on("activate", () => { // re-recreate window when dock icon is clicked and no other windows open
    if (window == null) createWindow();
  });
} else {
  (async () => {
    const server = await create_server();
    start_server(server);
  })();
}