Add single instance lock

This commit is contained in:
Vendicated 2023-04-04 01:54:03 +02:00
parent d7020a8501
commit 6885564241
No known key found for this signature in database
GPG key ID: A1DC0CFB5615D905

View file

@ -7,27 +7,27 @@ import { join } from "path";
import { DATA_DIR, VENCORD_FILES_DIR } from "./constants"; import { DATA_DIR, VENCORD_FILES_DIR } from "./constants";
import { once } from "../shared/utils/once"; import { once } from "../shared/utils/once";
import "./ipc";
import { ensureVencordFiles } from "./utils/vencordLoader"; import { ensureVencordFiles } from "./utils/vencordLoader";
import "./ipc";
// Make the Vencord files use our DATA_DIR // Make the Vencord files use our DATA_DIR
process.env.VENCORD_USER_DATA_DIR = DATA_DIR; process.env.VENCORD_USER_DATA_DIR = DATA_DIR;
const runVencordMain = once(() => require(join(VENCORD_FILES_DIR, "main.js"))); const runVencordMain = once(() => require(join(VENCORD_FILES_DIR, "main.js")));
async function createWindows() { let mainWin: BrowserWindow | null = null;
const splash = createSplashWindow();
await ensureVencordFiles(); if (!app.requestSingleInstanceLock()) {
runVencordMain(); console.log("Vencord Desktop is already running. Quitting...");
app.quit();
const mainWindow = createMainWindow(); } else {
app.on("second-instance", () => {
mainWindow.once("ready-to-show", () => { if (mainWin) {
splash.destroy(); if (mainWin.isMinimized()) mainWin.restore();
mainWindow.show(); mainWin.focus();
});
} }
});
app.whenReady().then(async () => { app.whenReady().then(async () => {
createWindows(); createWindows();
@ -36,6 +36,21 @@ app.whenReady().then(async () => {
if (BrowserWindow.getAllWindows().length === 0) createWindows(); 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();
});
}
app.on("window-all-closed", () => { app.on("window-all-closed", () => {
if (process.platform !== "darwin") if (process.platform !== "darwin")