76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
/*
|
|
* SPDX-License-Identifier: GPL-3.0
|
|
* Vencord Desktop, a desktop app aiming to give you a snappier Discord Experience
|
|
* Copyright (c) 2023 Vendicated and Vencord contributors
|
|
*/
|
|
|
|
import "./ipc";
|
|
|
|
import { app, BrowserWindow } from "electron";
|
|
import { join } from "path";
|
|
import { checkUpdates } from "updater/main";
|
|
|
|
import { ICON_PATH } from "../shared/paths";
|
|
import { once } from "../shared/utils/once";
|
|
import { DATA_DIR, VENCORD_FILES_DIR } from "./constants";
|
|
import { createMainWindow } from "./mainWindow";
|
|
import { Settings } from "./settings";
|
|
import { createSplashWindow } from "./splash";
|
|
import { ensureVencordFiles } from "./utils/vencordLoader";
|
|
if (IS_DEV) {
|
|
require("source-map-support").install();
|
|
}
|
|
|
|
// Make the Vencord files use our DATA_DIR
|
|
process.env.VENCORD_USER_DATA_DIR = DATA_DIR;
|
|
|
|
const runVencordMain = once(() => require(join(VENCORD_FILES_DIR, "vencordDesktopMain.js")));
|
|
|
|
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();
|
|
if (!mainWin.isVisible()) mainWin.show();
|
|
mainWin.focus();
|
|
}
|
|
});
|
|
|
|
app.whenReady().then(async () => {
|
|
checkUpdates();
|
|
if (process.platform === "win32") app.setAppUserModelId("dev.vencord.desktop");
|
|
else if (process.platform === "darwin") app.dock.setIcon(ICON_PATH);
|
|
|
|
createWindows();
|
|
|
|
app.on("activate", () => {
|
|
if (BrowserWindow.getAllWindows().length === 0) createWindows();
|
|
});
|
|
});
|
|
}
|
|
|
|
async function createWindows() {
|
|
const splash = createSplashWindow();
|
|
|
|
await ensureVencordFiles();
|
|
runVencordMain();
|
|
|
|
mainWin = createMainWindow();
|
|
|
|
mainWin.once("ready-to-show", () => {
|
|
splash.destroy();
|
|
mainWin!.show();
|
|
|
|
if (Settings.store.maximized) {
|
|
mainWin!.maximize();
|
|
}
|
|
});
|
|
}
|
|
|
|
app.on("window-all-closed", () => {
|
|
if (process.platform !== "darwin") app.quit();
|
|
});
|