armcord/src/settings/main.ts

90 lines
3.1 KiB
TypeScript
Raw Normal View History

import {BrowserWindow, shell, ipcMain, app, clipboard} from "electron";
import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation, getLangName} from "../utils";
2022-01-30 19:48:32 +00:00
import path from "path";
import os from "os";
import fs from "fs";
2022-03-04 17:53:18 +00:00
var settingsWindow: BrowserWindow;
var instance: number = 0;
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const themesPath = path.join(userDataPath, "/themes/");
const pluginsPath = path.join(userDataPath, "/plugins/");
2022-01-30 19:48:32 +00:00
export function createSettingsWindow() {
console.log("Creating a settings window.");
instance = instance + 1;
if (instance > 1) {
if (settingsWindow) {
settingsWindow.show();
settingsWindow.restore();
}
2022-03-04 17:53:18 +00:00
} else {
settingsWindow = new BrowserWindow({
2022-07-14 17:46:01 +00:00
width: 660,
height: 670,
2022-03-04 17:53:18 +00:00
title: "ArmCord Settings",
darkTheme: true,
frame: true,
autoHideMenuBar: true,
webPreferences: {
2022-08-25 14:10:26 +00:00
sandbox: false,
2022-03-04 17:53:18 +00:00
preload: path.join(__dirname, "preload.js")
}
});
async function settingsLoadPage() {
if ((await getConfig("channel")) == "hummus") {
settingsWindow.loadURL(`file://${__dirname}/hummus.html`);
} else {
settingsWindow.loadURL(`file://${__dirname}/settings.html`);
}
}
2022-03-04 17:53:18 +00:00
ipcMain.on("saveSettings", (event, args: Settings) => {
console.log(args);
2022-04-18 10:25:10 +00:00
setConfigBulk(args);
2022-03-04 17:53:18 +00:00
});
ipcMain.on("openStorageFolder", (event) => {
shell.openPath(storagePath);
});
ipcMain.on("openThemesFolder", (event) => {
shell.openPath(themesPath);
});
ipcMain.on("openPluginsFolder", (event) => {
shell.openPath(pluginsPath);
});
ipcMain.on("getLangName", async (event) => {
event.returnValue = await getLangName();
});
2022-03-04 17:53:18 +00:00
ipcMain.handle("getSetting", (event, toGet: string) => {
2022-04-18 10:25:10 +00:00
return getConfig(toGet);
2022-03-04 17:53:18 +00:00
});
ipcMain.on("copyDebugInfo", (event) => {
let settingsFileContent = fs.readFileSync(getConfigLocation(), "utf-8");
clipboard.writeText(
"**OS:** " +
os.platform() +
" " +
os.version() +
"\n**Architecture:** " +
os.arch() +
"\n**ArmCord version:** " +
getVersion() +
"\n**Electron version:** " +
process.versions.electron +
"\n`" +
settingsFileContent +
"`"
);
});
2022-03-04 17:53:18 +00:00
settingsWindow.webContents.setWindowOpenHandler(({url}) => {
shell.openExternal(url);
return {action: "deny"};
});
settingsLoadPage();
settingsWindow.on("close", (event: Event) => {
ipcMain.removeHandler("getSetting");
ipcMain.removeAllListeners("saveSettings");
instance = 0;
2022-03-04 17:53:18 +00:00
});
}
2022-01-30 19:48:32 +00:00
}