mirror of
https://github.com/smartfrigde/armcord.git
synced 2024-08-14 23:56:58 +00:00
Compare commits
2 commits
75276dee90
...
8454a6d579
Author | SHA1 | Date | |
---|---|---|---|
|
8454a6d579 | ||
|
5c109f530b |
6 changed files with 60 additions and 2204 deletions
2179
pnpm-lock.yaml
generated
2179
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load diff
|
@ -6,7 +6,8 @@ import "./extensions/mods";
|
||||||
import "./extensions/plugin";
|
import "./extensions/plugin";
|
||||||
import "./tray";
|
import "./tray";
|
||||||
import {createCustomWindow, createNativeWindow} from "./window";
|
import {createCustomWindow, createNativeWindow} from "./window";
|
||||||
|
import path from "path";
|
||||||
|
export var iconPath: string;
|
||||||
export var settings: any;
|
export var settings: any;
|
||||||
export var customTitlebar: boolean;
|
export var customTitlebar: boolean;
|
||||||
export var clientName: "ArmCord";
|
export var clientName: "ArmCord";
|
||||||
|
@ -25,6 +26,11 @@ if (process.platform == "linux") {
|
||||||
checkIfConfigExists();
|
checkIfConfigExists();
|
||||||
injectElectronFlags();
|
injectElectronFlags();
|
||||||
app.whenReady().then(async () => {
|
app.whenReady().then(async () => {
|
||||||
|
if (await getConfig("customIcon") !== undefined ?? null) {
|
||||||
|
iconPath = await getConfig("customIcon")
|
||||||
|
} else {
|
||||||
|
iconPath = path.join(__dirname, "../", "/assets/ac_icon_transparent.png")
|
||||||
|
}
|
||||||
async function init() {
|
async function init() {
|
||||||
switch (await getConfig("windowStyle")) {
|
switch (await getConfig("windowStyle")) {
|
||||||
case "default":
|
case "default":
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import {BrowserWindow, shell, ipcMain, app, clipboard} from "electron";
|
import {BrowserWindow, shell, ipcMain, app, clipboard} from "electron";
|
||||||
import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation, getLangName} from "../utils";
|
import {getConfig, setConfigBulk, Settings, getLang, getVersion, getConfigLocation, getLangName, sleep} from "../utils";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import os from "os";
|
import os from "os";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
import {mainWindow} from "../window";
|
||||||
var settingsWindow: BrowserWindow;
|
var settingsWindow: BrowserWindow;
|
||||||
var instance: number = 0;
|
var instance: number = 0;
|
||||||
const userDataPath = app.getPath("userData");
|
const userDataPath = app.getPath("userData");
|
||||||
|
@ -37,19 +38,42 @@ export function createSettingsWindow() {
|
||||||
settingsWindow.loadURL(`file://${__dirname}/settings.html`);
|
settingsWindow.loadURL(`file://${__dirname}/settings.html`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const userDataPath = app.getPath("userData");
|
||||||
|
const themesFolder = userDataPath + "/themes/";
|
||||||
|
if (!fs.existsSync(themesFolder)) {
|
||||||
|
fs.mkdirSync(themesFolder);
|
||||||
|
console.log("Created missing theme folder");
|
||||||
|
}
|
||||||
|
settingsWindow.webContents.on("did-finish-load", () => {
|
||||||
|
fs.readdirSync(themesFolder).forEach((file) => {
|
||||||
|
try {
|
||||||
|
const manifest = fs.readFileSync(`${themesFolder}/${file}/manifest.json`, "utf8");
|
||||||
|
var themeFile = JSON.parse(manifest);
|
||||||
|
settingsWindow.webContents.send(
|
||||||
|
"themeLoader",
|
||||||
|
fs.readFileSync(`${themesFolder}/${file}/${themeFile.theme}`, "utf-8")
|
||||||
|
);
|
||||||
|
console.log(`%cLoaded ${themeFile.name} made by ${themeFile.author}`, "color:red");
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
ipcMain.on("saveSettings", (event, args: Settings) => {
|
ipcMain.on("saveSettings", (event, args: Settings) => {
|
||||||
console.log(args);
|
console.log(args);
|
||||||
setConfigBulk(args);
|
setConfigBulk(args);
|
||||||
});
|
});
|
||||||
ipcMain.on("openStorageFolder", (event) => {
|
ipcMain.on("openStorageFolder", async (event) => {
|
||||||
shell.openPath(storagePath);
|
shell.openPath(storagePath);
|
||||||
|
await sleep(1000);
|
||||||
});
|
});
|
||||||
ipcMain.on("openThemesFolder", (event) => {
|
ipcMain.on("openThemesFolder", async (event) => {
|
||||||
shell.openPath(themesPath);
|
shell.openPath(themesPath);
|
||||||
|
await sleep(1000);
|
||||||
});
|
});
|
||||||
ipcMain.on("openPluginsFolder", (event) => {
|
ipcMain.on("openPluginsFolder", async (event) => {
|
||||||
shell.openPath(pluginsPath);
|
shell.openPath(pluginsPath);
|
||||||
|
await sleep(1000);
|
||||||
});
|
});
|
||||||
ipcMain.on("getLangName", async (event) => {
|
ipcMain.on("getLangName", async (event) => {
|
||||||
event.returnValue = await getLangName();
|
event.returnValue = await getLangName();
|
||||||
|
|
|
@ -20,6 +20,12 @@ contextBridge.exposeInMainWorld("settings", {
|
||||||
copyDebugInfo: () => ipcRenderer.send("copyDebugInfo")
|
copyDebugInfo: () => ipcRenderer.send("copyDebugInfo")
|
||||||
});
|
});
|
||||||
if (ipcRenderer.sendSync("getLangName") == "en-US") {
|
if (ipcRenderer.sendSync("getLangName") == "en-US") {
|
||||||
|
console.log("[Settings]: Lang " + ipcRenderer.sendSync("getLangName"));
|
||||||
const cssPath = path.join(__dirname, "../", "/content/css/settingsEng.css");
|
const cssPath = path.join(__dirname, "../", "/content/css/settingsEng.css");
|
||||||
addStyle(fs.readFileSync(cssPath, "utf8"));
|
document.addEventListener("DOMContentLoaded", function (event) {
|
||||||
|
addStyle(fs.readFileSync(cssPath, "utf8"));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
ipcRenderer.on("themeLoader", (event, message) => {
|
||||||
|
addStyle(message);
|
||||||
|
});
|
||||||
|
|
|
@ -99,7 +99,7 @@
|
||||||
<option value="stable">Stable</option>
|
<option value="stable">Stable</option>
|
||||||
<option value="canary">Canary</option>
|
<option value="canary">Canary</option>
|
||||||
<option value="ptb">PTB</option>
|
<option value="ptb">PTB</option>
|
||||||
<option value="hummus">Hummus (unofficial)</option>
|
<option value="hummus">Hummus (unofficial, experimental)</option>
|
||||||
</select>
|
</select>
|
||||||
<div>
|
<div>
|
||||||
<p class="header" id="settings-channel">Discord channel</p>
|
<p class="header" id="settings-channel">Discord channel</p>
|
||||||
|
|
|
@ -20,20 +20,20 @@ import startServer from "./socket";
|
||||||
import contextMenu from "electron-context-menu";
|
import contextMenu from "electron-context-menu";
|
||||||
import os from "os";
|
import os from "os";
|
||||||
import {tray} from "./tray";
|
import {tray} from "./tray";
|
||||||
export var icon: string;
|
import {iconPath} from "./main";
|
||||||
export let mainWindow: BrowserWindow;
|
export let mainWindow: BrowserWindow;
|
||||||
export let inviteWindow: BrowserWindow;
|
export let inviteWindow: BrowserWindow;
|
||||||
var osType = os.type();
|
|
||||||
|
|
||||||
|
var osType = os.type();
|
||||||
contextMenu({
|
contextMenu({
|
||||||
showSaveImageAs: true,
|
showSaveImageAs: true,
|
||||||
showCopyImageAddress: true,
|
showCopyImageAddress: true,
|
||||||
showSearchWithGoogle: true
|
showSearchWithGoogle: true,
|
||||||
|
showSearchWithDuckDuckGo: true
|
||||||
});
|
});
|
||||||
|
|
||||||
async function doAfterDefiningTheWindow() {
|
async function doAfterDefiningTheWindow() {
|
||||||
var ignoreProtocolWarning = await getConfig("ignoreProtocolWarning");
|
var ignoreProtocolWarning = await getConfig("ignoreProtocolWarning");
|
||||||
checkIfConfigIsBroken();
|
await checkIfConfigIsBroken();
|
||||||
registerIpc();
|
registerIpc();
|
||||||
if (await getConfig("mobileMode")) {
|
if (await getConfig("mobileMode")) {
|
||||||
mainWindow.webContents.userAgent =
|
mainWindow.webContents.userAgent =
|
||||||
|
@ -104,7 +104,6 @@ async function doAfterDefiningTheWindow() {
|
||||||
}
|
}
|
||||||
getFavicon()
|
getFavicon()
|
||||||
`)
|
`)
|
||||||
console.log(app.getPath("temp"))
|
|
||||||
var buf = new Buffer(faviconBase64.replace(/^data:image\/\w+;base64,/, ""), 'base64');
|
var buf = new Buffer(faviconBase64.replace(/^data:image\/\w+;base64,/, ""), 'base64');
|
||||||
fs.writeFileSync(path.join(app.getPath("temp"), "/", "tray.png"), buf, "utf-8");
|
fs.writeFileSync(path.join(app.getPath("temp"), "/", "tray.png"), buf, "utf-8");
|
||||||
let trayPath = nativeImage.createFromPath(path.join(app.getPath("temp"), "/", "tray.png"));
|
let trayPath = nativeImage.createFromPath(path.join(app.getPath("temp"), "/", "tray.png"));
|
||||||
|
@ -133,10 +132,10 @@ async function doAfterDefiningTheWindow() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
setMenu();
|
await setMenu();
|
||||||
mainWindow.on("close", async (e) => {
|
mainWindow.on("close", async (e) => {
|
||||||
let [width, height] = mainWindow.getSize();
|
let [width, height] = mainWindow.getSize();
|
||||||
setWindowState({
|
await setWindowState({
|
||||||
width: width,
|
width: width,
|
||||||
height: height,
|
height: height,
|
||||||
isMaximized: mainWindow.isMaximized()
|
isMaximized: mainWindow.isMaximized()
|
||||||
|
@ -175,22 +174,22 @@ async function doAfterDefiningTheWindow() {
|
||||||
if ((await getConfig("skipSplash")) == true) {
|
if ((await getConfig("skipSplash")) == true) {
|
||||||
switch (await getConfig("channel")) {
|
switch (await getConfig("channel")) {
|
||||||
case "stable":
|
case "stable":
|
||||||
mainWindow.loadURL("https://discord.com/app");
|
await mainWindow.loadURL("https://discord.com/app");
|
||||||
break;
|
break;
|
||||||
case "canary":
|
case "canary":
|
||||||
mainWindow.loadURL("https://canary.discord.com/app");
|
await mainWindow.loadURL("https://canary.discord.com/app");
|
||||||
break;
|
break;
|
||||||
case "ptb":
|
case "ptb":
|
||||||
mainWindow.loadURL("https://ptb.discord.com/app");
|
await mainWindow.loadURL("https://ptb.discord.com/app");
|
||||||
break;
|
break;
|
||||||
case "hummus":
|
case "hummus":
|
||||||
mainWindow.loadURL("https://hummus.sys42.net/");
|
await mainWindow.loadURL("https://hummus.sys42.net/");
|
||||||
break;
|
break;
|
||||||
case undefined:
|
case undefined:
|
||||||
mainWindow.loadURL("https://discord.com/app");
|
await mainWindow.loadURL("https://discord.com/app");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mainWindow.loadURL("https://discord.com/app");
|
await mainWindow.loadURL("https://discord.com/app");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await mainWindow.loadFile(path.join(__dirname, "/content/splash.html"));
|
await mainWindow.loadFile(path.join(__dirname, "/content/splash.html"));
|
||||||
|
@ -203,7 +202,7 @@ export function createCustomWindow() {
|
||||||
height: 350,
|
height: 350,
|
||||||
title: "ArmCord",
|
title: "ArmCord",
|
||||||
darkTheme: true,
|
darkTheme: true,
|
||||||
icon: path.join(__dirname, "../", "/assets/ac_icon_transparent.png"),
|
icon: iconPath,
|
||||||
frame: false,
|
frame: false,
|
||||||
autoHideMenuBar: true,
|
autoHideMenuBar: true,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
|
@ -220,7 +219,7 @@ export function createNativeWindow() {
|
||||||
height: 350,
|
height: 350,
|
||||||
title: "ArmCord",
|
title: "ArmCord",
|
||||||
darkTheme: true,
|
darkTheme: true,
|
||||||
icon: path.join(__dirname, "../", "/assets/ac_icon_transparent.png"),
|
icon: iconPath,
|
||||||
frame: true,
|
frame: true,
|
||||||
autoHideMenuBar: true,
|
autoHideMenuBar: true,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
|
@ -238,7 +237,7 @@ export function createInviteWindow() {
|
||||||
height: 600,
|
height: 600,
|
||||||
title: "ArmCord Invite Manager",
|
title: "ArmCord Invite Manager",
|
||||||
darkTheme: true,
|
darkTheme: true,
|
||||||
icon: path.join(__dirname, "../", "/assets/ac_icon_transparent.png"),
|
icon: iconPath,
|
||||||
frame: true,
|
frame: true,
|
||||||
autoHideMenuBar: true,
|
autoHideMenuBar: true,
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue