Files
Vesktop/src/main/index.ts

70 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-03-30 01:02:30 +02:00
import { app, BrowserWindow } from 'electron';
import { createMainWindow } from "./mainWindow";
import { createSplashWindow } from "./splash";
import { join } from "path";
2023-04-04 00:41:52 +02:00
import { DATA_DIR, VENCORD_FILES_DIR } from "./constants";
import { once } from "../shared/utils/once";
import { ensureVencordFiles } from "./utils/vencordLoader";
2023-03-31 01:21:06 +02:00
import { ICON_PATH } from "../shared/paths";
2023-04-04 01:54:03 +02:00
import "./ipc";
2023-04-04 04:17:38 +02:00
import { Settings } from "./settings";
2023-04-04 01:54:03 +02:00
2023-04-04 00:41:52 +02:00
// Make the Vencord files use our DATA_DIR
process.env.VENCORD_USER_DATA_DIR = DATA_DIR;
2023-04-04 00:41:52 +02:00
const runVencordMain = once(() => require(join(VENCORD_FILES_DIR, "main.js")));
2023-04-04 01:54:03 +02:00
let mainWin: BrowserWindow | null = null;
if (!app.requestSingleInstanceLock()) {
console.log("Vencord Desktop is already running. Quitting...");
app.quit();
} else {
app.on("second-instance", () => {
if (mainWin) {
if (mainWin.isMinimized()) mainWin.restore();
mainWin.focus();
}
});
app.whenReady().then(async () => {
2023-04-05 04:20:13 +02:00
if (process.platform === "win32")
app.setAppUserModelId("dev.vencord.desktop");
else if (process.platform === "darwin")
app.dock.setIcon(ICON_PATH);
2023-04-04 01:54:03 +02:00
createWindows();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindows();
});
});
}
2023-04-04 00:41:52 +02:00
async function createWindows() {
2023-03-30 01:02:30 +02:00
const splash = createSplashWindow();
2023-04-04 00:41:52 +02:00
await ensureVencordFiles();
runVencordMain();
2023-04-04 01:54:03 +02:00
mainWin = createMainWindow();
2023-04-04 00:41:52 +02:00
2023-04-04 01:54:03 +02:00
mainWin.once("ready-to-show", () => {
2023-03-30 01:02:30 +02:00
splash.destroy();
2023-04-04 01:54:03 +02:00
mainWin!.show();
2023-04-04 04:17:38 +02:00
if (Settings.maximized) {
mainWin!.maximize();
}
2023-03-30 01:02:30 +02:00
});
}
app.on("window-all-closed", () => {
if (process.platform !== "darwin")
app.quit();
});