armcord/src/utils.ts

102 lines
2.7 KiB
TypeScript
Raw Normal View History

2022-01-15 21:21:51 +00:00
import * as storage from "electron-json-storage";
2022-01-16 18:07:00 +00:00
import * as fs from "fs";
2022-03-04 17:53:18 +00:00
import {app} from "electron";
2022-01-30 19:48:32 +00:00
import path from "path";
export var firstRun: boolean;
2022-01-16 18:07:00 +00:00
2021-12-24 21:56:49 +00:00
//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) {
2022-03-04 17:53:18 +00:00
const style = document.createElement("style");
style.textContent = styleString;
document.head.append(style);
2022-01-15 21:21:51 +00:00
}
2021-12-24 21:56:49 +00:00
export function addScript(scriptString: string) {
2022-03-04 17:53:18 +00:00
var script = document.createElement("script");
script.textContent = scriptString;
document.body.append(script);
2021-12-24 21:56:49 +00:00
}
2022-03-04 16:30:23 +00:00
export async function sleep(ms: number) {
2022-03-04 17:53:18 +00:00
return new Promise((resolve) => setTimeout(resolve, ms));
2022-03-04 16:30:23 +00:00
}
export async function checkIfConfigIsNew() {
2022-03-04 17:53:18 +00:00
if ((await getConfigUnsafe("automaticPatches")) == undefined) {
firstRun = true;
}
2022-03-04 16:30:23 +00:00
}
export interface Settings {
2022-03-04 17:53:18 +00:00
windowStyle: string;
channel: string;
armcordCSP: boolean;
minimizeToTray: boolean;
automaticPatches: boolean;
mods: string;
blurType: string;
2022-03-04 16:30:23 +00:00
}
2022-01-15 21:21:51 +00:00
export function setup() {
2022-03-04 17:53:18 +00:00
console.log("Setting up temporary ArmCord settings.");
const defaults: Settings = {
windowStyle: "default",
channel: "stable",
armcordCSP: true,
minimizeToTray: true,
automaticPatches: false,
mods: "cumcord",
blurType: "acrylic"
};
storage.set(
"settings",
{
...defaults,
doneSetup: true
},
function (error) {
if (error) throw error;
}
);
}
2022-03-04 16:30:23 +00:00
2022-03-04 17:53:18 +00:00
export function saveSettings(settings: Settings) {
console.log("Setting up ArmCord settings.");
storage.set(
"settings",
{
...settings,
doneSetup: true
},
function (error) {
if (error) throw error;
}
);
2022-01-15 21:21:51 +00:00
}
2022-01-16 18:07:00 +00:00
export async function getConfigUnsafe(object: string) {
2022-03-04 17:53:18 +00:00
try {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
let rawdata = fs.readFileSync(storagePath + "settings.json", "utf-8");
let returndata = JSON.parse(rawdata);
console.log(returndata[object]);
return returndata[object];
} catch (e) {
console.log("Config probably doesn't exist yet. Returning setup value.");
firstRun = true;
return "setup";
}
2022-01-16 18:07:00 +00:00
}
2022-01-15 21:21:51 +00:00
export function getVersion() {
2022-03-04 17:53:18 +00:00
//to-do better way of doing this
return "3.1.0";
}
2022-02-26 21:26:16 +00:00
export async function injectJS(inject: string) {
2022-03-04 17:53:18 +00:00
const js = await (await fetch(`${inject}`)).text();
2022-02-26 21:26:16 +00:00
2022-03-04 17:53:18 +00:00
const el = document.createElement("script");
2022-02-26 21:26:16 +00:00
2022-03-04 17:53:18 +00:00
el.appendChild(document.createTextNode(js));
2022-02-26 21:26:16 +00:00
2022-03-04 17:53:18 +00:00
document.body.appendChild(el);
}