Add auto-launch and bunch of other things

This commit is contained in:
smartfrigde 2022-05-14 21:02:09 +02:00
parent 6663b6de5f
commit 5893f5bea9
8 changed files with 101 additions and 105 deletions

View file

@ -96,6 +96,7 @@
windowStyle: "default",
channel: "stable",
armcordCSP: true,
autoLaunch: true,
minimizeToTray: true,
automaticPatches: false,
mods: "cumcord",
@ -126,6 +127,7 @@
windowStyle: "default",
channel: options.channel,
armcordCSP: true,
autoLaunch: true,
minimizeToTray: true,
automaticPatches: false,
mods: options.mod,
@ -141,6 +143,7 @@
armcordCSP: true,
minimizeToTray: true,
automaticPatches: false,
autoLaunch: true,
mods: "none",
inviteWebsocket: true,
blurType: "acrylic"

View file

@ -7,6 +7,7 @@ import "./extensions/plugin";
import "./tray";
import {createCustomWindow, createNativeWindow, createTabsHost} from "./window";
import "./shortcuts";
import AutoLaunch from "easy-auto-launch";
export var settings: any;
export var customTitlebar: boolean;
@ -25,7 +26,17 @@ if (process.platform == "linux") {
}
checkIfConfigExists();
var AutoLauncher = new AutoLaunch({
name: 'ArmCord',
path: '/Applications/ArmCord.app',
});
app.whenReady().then(async () => {
if (await getConfig("autoLaunch") == "true") {
AutoLauncher.enable()
} else {
AutoLauncher.disable()
}
switch (await getConfig("windowStyle")) {
case "default":
createCustomWindow();

View file

@ -15,7 +15,7 @@ export function createSettingsWindow() {
} else {
settingsWindow = new BrowserWindow({
width: 500,
height: 500,
height: 555,
title: "ArmCord Settings",
darkTheme: true,
frame: true,

View file

@ -40,6 +40,12 @@
<input class="tgl tgl-light left" id="websocket" type="checkbox" />
<label class="tgl-btn left" for="websocket"></label>
</div>
<br />
<div class="switch">
<label class="header">Auto launch</label>
<input class="tgl tgl-light left" id="autolaunch" type="checkbox" />
<label class="tgl-btn left" for="autolaunch"></label>
</div>
<div class="switch">
<select name="channel" id="channel" class="left">
<option value="stable">Stable</option>
@ -71,6 +77,7 @@
document.getElementById("mod").value = await settings.get("mods");
document.getElementById("channel").value = await settings.get("channel");
document.getElementById("theme").value = await settings.get("windowStyle");
document.getElementById("autolaunch").checked = await settings.get("autoLaunch");
}
loadSettings();
document.getElementById("save").addEventListener("click", function () {
@ -83,6 +90,7 @@
automaticPatches: document.getElementById("patches").checked,
mods: document.getElementById("mod").value,
blurType: "acrylic",
autoLaunch: document.getElementById("autolaunch").checked,
inviteWebsocket: document.getElementById("websocket").checked,
doneSetup: true
});

View file

@ -2,6 +2,7 @@ import * as fs from "fs";
import {app, dialog} from "electron";
import path from "path";
export var firstRun: boolean;
export var isSetup: boolean;
export var contentPath: string;
//utillity functions that are used all over the codebase or just too obscure to be put in the file used in
export function addStyle(styleString: string) {
@ -21,7 +22,7 @@ export async function sleep(ms: number) {
}
export async function checkIfConfigIsBroken() {
if (await getConfig("0") == "d") {
if ((await getConfig("0")) == "d") {
console.log("Detected a corrupted config");
setup();
dialog.showErrorBox(
@ -39,6 +40,7 @@ export function setup() {
armcordCSP: true,
minimizeToTray: true,
automaticPatches: false,
autoLaunch: true,
mods: "cumcord",
blurType: "acrylic",
inviteWebsocket: true,
@ -71,6 +73,7 @@ export interface Settings {
armcordCSP: boolean;
minimizeToTray: boolean;
automaticPatches: boolean;
autoLaunch: boolean;
mods: string;
blurType: string;
inviteWebsocket: boolean;
@ -124,7 +127,7 @@ export async function checkIfConfigExists() {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const settingsFile = storagePath + "settings.json";
if (!fs.existsSync(settingsFile)) {
if (!fs.existsSync(storagePath)) {
fs.mkdirSync(storagePath);
@ -132,15 +135,26 @@ export async function checkIfConfigExists() {
}
console.log("First run of the ArmCord. Starting setup.");
setup();
isSetup = true;
contentPath = path.join(__dirname, "/content/setup.html");
if (!contentPath.includes("ts-out")) {
contentPath = path.join(__dirname, "/ts-out/content/setup.html");
}
} else {
console.log("ArmCord has been run before. Skipping setup.");
contentPath = path.join(__dirname, "/content/splash.html");
if (!contentPath.includes("ts-out")) {
contentPath = path.join(__dirname, "/ts-out/content/splash.html");
if (await getConfig("doneSetup") == false) {
console.log("First run of the ArmCord. Starting setup.");
setup();
isSetup = true;
contentPath = path.join(__dirname, "/content/setup.html");
if (!contentPath.includes("ts-out")) {
contentPath = path.join(__dirname, "/ts-out/content/setup.html");
}
} else {
console.log("ArmCord has been run before. Skipping setup.");
contentPath = path.join(__dirname, "/content/splash.html");
if (!contentPath.includes("ts-out")) {
contentPath = path.join(__dirname, "/ts-out/content/splash.html");
}
}
}
}

View file

@ -4,7 +4,7 @@
// I'm sorry for this mess but I'm not sure how to fix it.
import {BrowserWindow, shell, app, ipcMain, dialog, clipboard} from "electron";
import path from "path";
import {checkIfConfigIsBroken, firstRun, getConfig, contentPath} from "./utils";
import {checkIfConfigIsBroken, firstRun, getConfig, contentPath, isSetup} from "./utils";
import {registerIpc} from "./ipc";
import startServer from "./socket"
import contextMenu from "electron-context-menu";
@ -46,8 +46,12 @@ async function doAfterDefiningTheWindow() {
if (await getConfig("inviteWebsocket") == true) {
startServer()
}
try {
mainWindow.loadFile(contentPath);
if (isSetup) {
mainWindow.setSize(390, 470);
}
} catch (e) {
console.log(
"Major error detected while starting up. User is most likely on Windows platform. Fallback to alternative startup."
@ -55,12 +59,14 @@ async function doAfterDefiningTheWindow() {
console.log(process.platform);
if (process.platform === "win32") {
if (firstRun) {
mainWindow.setSize(390, 470);
mainWindow.loadURL(`file://${__dirname}/content/setup.html`);
} else {
mainWindow.loadURL(`file://${__dirname}/content/splash.html`);
}
} else {
if (firstRun) {
mainWindow.setSize(390, 470);
mainWindow.loadURL(`file://${__dirname}/ts-out/content/setup.html`);
} else {
mainWindow.loadURL(`file://${__dirname}/ts-out/content/splash.html`);
@ -70,8 +76,8 @@ async function doAfterDefiningTheWindow() {
}
export function createCustomWindow() {
mainWindow = new BrowserWindow({
width: 390,
height: 470,
width: 300,
height: 350,
title: "ArmCord",
darkTheme: true,
icon: path.join(__dirname, "/assets/icon_transparent.png"),