Files
desktop/lib/main/boot/bootloader.ts
rosetta 83f38dc63f 'init'
2026-01-30 05:01:05 +02:00

68 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { app, BrowserWindow, ipcMain } from "electron";
import fs from 'fs/promises'
import { WORKING_DIR } from "../constants";
import path from "path";
import { Logger } from "../logger";
const logger = Logger('bootloader');
ipcMain.handleOnce('report-boot-process-failed', async () => {
/**
* Если процесс загрузки не завершился успешно, то preload показывает
* экран ошибки, а нам нужно откатиться назад к загрузке dev.html
* и удалить скомпилированные файлы, чтобы при следующем запуске
* приложение попыталось загрузиться в режиме разработки.
*/
let filePath = path.join(WORKING_DIR, 'b');
await fs.rmdir(filePath, { recursive: true });
logger.log("Boot process failed, removed compiled files");
logger.log(`Removed compiled files at ${filePath}`);
logger.log(`Restarting application in safe mode`);
app.relaunch();
app.exit(0);
});
/**
* Boot функция, эта функция запускает приложение
* @param window окно
*/
export async function boot(window : BrowserWindow) {
if (!app.isPackaged && process.env['ELECTRON_RENDERER_URL']) {
await bootDevelopment(window);
// await bootProduction(window);
window.webContents.openDevTools({ mode: 'detach' });
//console.info(window.webContents);
return;
}
//window.webContents.openDevTools({ mode: 'detach' });
await bootProduction(window);
}
async function bootProduction(window : BrowserWindow) {
logger.log("Booting in production mode");
let html = path.join(WORKING_DIR, 'b', 'j.html');
if(await existsFile(html)){
logger.log(`Loading compiled file`);
window.loadFile(html);
} else {
logger.log(`Loading conatiner file`);
window.loadFile(path.join(__dirname, '../renderer/dev.html'));
}
}
async function bootDevelopment(window : BrowserWindow) {
logger.log("Booting in development mode");
window.loadURL(process.env['ELECTRON_RENDERER_URL'] + "/dev.html");
window.webContents.openDevTools({ mode: 'detach' });
}
async function existsFile(filePath: string): Promise<boolean> {
try {
await fs.access(filePath);
return true;
} catch {
return false;
}
}