armcord/src/main.ts

89 lines
3 KiB
TypeScript
Raw Normal View History

2021-12-24 21:56:49 +00:00
// Modules to control application life and create native browser window
2022-12-13 13:10:41 +00:00
import {app, BrowserWindow, crashReporter, session} from "electron";
2021-12-26 19:15:18 +00:00
import "v8-compile-cache";
2022-12-13 13:10:41 +00:00
import {
checkForDataFolder,
getConfig,
checkIfConfigExists,
injectElectronFlags,
installModLoader,
getConfigLocation
} from "./utils";
import "./extensions/mods";
2021-12-26 19:15:18 +00:00
import "./tray";
2022-12-13 13:10:41 +00:00
import fs from "fs";
2022-11-19 17:23:28 +00:00
import {createCustomWindow, createNativeWindow, createTransparentWindow, mainWindow} from "./window";
2022-08-25 14:42:54 +00:00
import path from "path";
export var iconPath: string;
2022-01-30 19:48:32 +00:00
export var settings: any;
export var customTitlebar: boolean;
export var clientName: "ArmCord";
2021-12-24 21:56:49 +00:00
if (!app.requestSingleInstanceLock()) {
// kill if 2nd instance
app.quit();
} else {
// Your data now belongs to CCP
let settingsFile = fs.readFileSync(getConfigLocation(), "utf-8");
crashReporter.start({uploadToServer: false, extra: {settingsFile}});
2022-12-13 13:10:41 +00:00
if (process.platform == "linux") {
if (process.env.$XDG_SESSION_TYPE == "wayland") {
console.log("Wayland specific patches applied.");
app.commandLine.appendSwitch("ozone-platform=wayland");
if (process.env.$XDG_CURRENT_DESKTOP == "GNOME") {
app.commandLine.appendSwitch("enable-features=UseOzonePlatform,WaylandWindowDecorations");
} else {
app.commandLine.appendSwitch("enable-features=UseOzonePlatform");
}
2022-07-11 18:19:50 +00:00
}
2022-03-04 17:53:18 +00:00
}
checkForDataFolder();
checkIfConfigExists();
injectElectronFlags();
app.whenReady().then(async () => {
if ((await getConfig("customIcon")) !== undefined ?? null) {
iconPath = await getConfig("customIcon");
} else {
iconPath = path.join(__dirname, "../", "/assets/ac_icon_transparent.png");
2022-03-04 17:53:18 +00:00
}
async function init() {
switch (await getConfig("windowStyle")) {
case "default":
createCustomWindow();
customTitlebar = true;
break;
case "native":
createNativeWindow();
break;
case "transparent":
createTransparentWindow();
break;
case "basic":
createNativeWindow();
break;
default:
createCustomWindow();
customTitlebar = true;
break;
}
2022-03-04 17:53:18 +00:00
}
await init();
await installModLoader();
session.fromPartition("some-partition").setPermissionRequestHandler((webContents, permission, callback) => {
if (permission === "notifications") {
// Approves the permissions request
callback(true);
}
if (permission === "media") {
// Approves the permissions request
callback(true);
}
});
app.on("activate", async function () {
if (BrowserWindow.getAllWindows().length === 0) await init();
});
2022-03-04 17:53:18 +00:00
});
2022-12-13 19:23:17 +00:00
}