Compare commits

...

15 commits

Author SHA1 Message Date
smartfridge
d8fe49df3f Merge remote-tracking branch 'origin/dev' into dev 2022-07-11 20:20:00 +02:00
smartfridge
0ebaa5627e code cleanup 2022-07-11 20:19:50 +02:00
Anonymous
251f4d55ff
Translated using Weblate (Portuguese (Brazil))
Currently translated at 68.9% (20 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pt_BR/
2022-07-11 19:17:59 +02:00
Anonymous
a3ac768f25
Translated using Weblate (Russian)
Currently translated at 93.1% (27 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/ru/
2022-07-11 19:17:59 +02:00
Anonymous
efe835be04
Translated using Weblate (Persian)
Currently translated at 82.7% (24 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fa/
2022-07-11 19:17:59 +02:00
Anonymous
e946615770
Translated using Weblate (Thai)
Currently translated at 96.5% (28 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/th/
2022-07-11 19:17:58 +02:00
Anonymous
db9bfbb269
Translated using Weblate (Spanish (Latin America))
Currently translated at 79.3% (23 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/es_419/
2022-07-11 19:17:58 +02:00
Anonymous
56c7b68c47
Translated using Weblate (Indonesian)
Currently translated at 96.5% (28 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/id/
2022-07-11 19:17:58 +02:00
Anonymous
69012c95a0
Translated using Weblate (Polish)
Currently translated at 82.7% (24 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pl/
2022-07-11 19:17:58 +02:00
Anonymous
7afb3962dc
Translated using Weblate (Dutch)
Currently translated at 82.7% (24 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/nl/
2022-07-11 19:17:58 +02:00
Anonymous
b25ff8dec3
Translated using Weblate (Norwegian Bokmål)
Currently translated at 82.7% (24 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/nb_NO/
2022-07-11 19:17:58 +02:00
Anonymous
6e30ffa7bf
Translated using Weblate (Italian)
Currently translated at 82.7% (24 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/it/
2022-07-11 19:17:57 +02:00
Anonymous
40dc67f0a8
Translated using Weblate (French)
Currently translated at 82.7% (24 of 29 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/fr/
2022-07-11 19:17:57 +02:00
Rafael V
9c2b00d56f
Translated using Weblate (Portuguese (Brazil))
Currently translated at 71.4% (20 of 28 strings)

Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/pt_BR/
2022-07-11 19:17:53 +02:00
smartfridge
d6cbbcba7d Add mobile mode 2022-07-11 19:17:46 +02:00
28 changed files with 198 additions and 202 deletions

5
.idea/.gitignore generated vendored Normal file
View file

@ -0,0 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

12
.idea/ArmCord.iml generated Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ArmCord.iml" filepath="$PROJECT_DIR$/.idea/ArmCord.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View file

@ -18,6 +18,7 @@
"settings-theme-native": "Native",
"settings-tray": "Minimize to tray",
"settings-patches": "Automatic Patches",
"settings-mobileMode": "Mobile mode",
"settings-channel": "Discord channel:",
"settings-invitewebsocket": "Invite Websocket",
"settings-mod": "Client mod:",

View file

@ -26,5 +26,6 @@
"settings-prfmMode-battery": "Batería",
"settings-none": "Ninguna",
"settings-save": "Guardar ajustes",
"settings-updater": "Buscar una actualización"
"settings-updater": "Buscar una actualización",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-prfmMode-battery": "ذخیره برای باتری",
"settings-none": "هیچکدام",
"settings-save": "ذخیره تنظیمات",
"settings-updater": "بررسی برای بروزرسانی"
"settings-updater": "بررسی برای بروزرسانی",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-prfmMode": "Mode performance :",
"settings-prfmMode-performance": "Performance",
"settings-prfmMode-battery": "Batterie",
"settings-none": "Aucun"
"settings-none": "Aucun",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-prfmMode": "mode kinerja:",
"settings-prfmMode-performance": "kinerja",
"settings-prfmMode-battery": "Baterai",
"settings-none": "tidak ada"
"settings-none": "tidak ada",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-prfmMode": "Performance mode:",
"settings-prfmMode-performance": "Performance",
"settings-prfmMode-battery": "Battery",
"settings-none": "None"
"settings-none": "None",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-prfmMode": "Performance mode:",
"settings-prfmMode-performance": "Performance",
"settings-prfmMode-battery": "Battery",
"settings-none": "None"
"settings-none": "None",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-none": "None",
"settings-prfmMode": "Performance mode:",
"settings-prfmMode-performance": "Performance",
"settings-prfmMode-battery": "Battery"
"settings-prfmMode-battery": "Battery",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-prfmMode": "Tryb wydajności:",
"settings-prfmMode-performance": "Wydajny",
"settings-prfmMode-battery": "Bateria",
"settings-none": "Nic/Brak"
"settings-none": "Nic/Brak",
"settings-mobileMode": "Mobile mode"
}

View file

@ -1,24 +1,24 @@
{
"no": "No",
"loading_screen_start": "Starting ArmCord…",
"loading_screen_offline": "You appear to be offline. Please connect to the Internet and try again.",
"loading_screen_update": "A new version of ArmCord is available. Please update to the latest version.",
"setup_question1": "Select what kind of setup you want to perform:",
"setup_question1_answer1": "Express Setup",
"setup_question1_answer2": "Full Setup",
"setup_offline": "You appear to be offline. Please connect to the internet and restart ArmCord.",
"setup_question2": "Choose your Discord channel/instance:",
"setup_question3": "Should ArmCord handle client mods installation?",
"yes": "Yes",
"next": "Next",
"setup_question4": "Select a client mod you want to install:",
"setup_question4_clientmodnotice": "Why not all of them? Having many client mods at the same time can cause issues. If you really want to do it though, check our Discord.",
"settings-theme": "ArmCord theme:",
"settings-theme-default": "Default",
"settings-theme-native": "Native",
"settings-tray": "Minimize to tray",
"settings-patches": "Automatic Patches",
"settings-channel": "Discord channel:",
"no": "Não",
"loading_screen_start": "Iniciando ArmCord…",
"loading_screen_offline": "Você parece estar offline. Conecte-se à internet e tente novamente.",
"loading_screen_update": "Uma nova versão do ArmCord está disponível. Atualize para a versão mais recente.",
"setup_question1": "Selecione que tipo de instação você quer fazer:",
"setup_question1_answer1": "Instalação rápida",
"setup_question1_answer2": "Instalação completa",
"setup_offline": "Você parece estar offline. Conecte-se à internet e tente novamente.",
"setup_question2": "Escolha o canal/instância do seu Discord",
"setup_question3": "O ArmCord deve suportar a instalação dos mods de cliente?",
"yes": "Sim",
"next": "Próximo",
"setup_question4": "Selecione um mod de cliente que você quer instalar:",
"setup_question4_clientmodnotice": "Por que não todos eles? Tendo vários mods de cliente ao mesmo tempo pode causar problemas, Se você realmente quer fazer isso mesmo assim, veja o nosso Discord.",
"settings-theme": "Tema do ArmCord:",
"settings-theme-default": "Padrão",
"settings-theme-native": "Nativo",
"settings-tray": "Minimizar para a bandeja",
"settings-patches": "Patches automáticos",
"settings-channel": "Tipo de Discord:",
"settings-invitewebsocket": "Invite Websocket",
"settings-mod": "Client mod:",
"settings-prfmMode": "Performance mode:",
@ -26,5 +26,6 @@
"settings-prfmMode-battery": "Battery",
"settings-none": "None",
"settings-save": "Save Settings",
"settings-updater": "Check for updates"
"settings-updater": "Check for updates",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-prfmMode-battery": "Батарея",
"settings-none": "Ничего",
"settings-save": "Сохранить настройки",
"settings-updater": "Проверить наличие обновлений"
"settings-updater": "Проверить наличие обновлений",
"settings-mobileMode": "Mobile mode"
}

View file

@ -26,5 +26,6 @@
"settings-mod": "ไคลแอนต์มอด:",
"settings-none": "ไม่มี",
"settings-save": "บันทึกการตั้งค่า",
"settings-updater": "ตรวจหาการอัปเดต"
"settings-updater": "ตรวจหาการอัปเดต",
"settings-mobileMode": "Mobile mode"
}

View file

@ -0,0 +1,6 @@
[aria-label~="Mute"] {
display: none;
}
[aria-label~="Deafen"] {
display: none;
}

View file

@ -31,7 +31,6 @@
<option value="stable">Stable</option>
<option value="canary">Canary</option>
<option value="ptb">PTB</option>
<option value="foss">Fosscord</option>
</select>
</div>
<p class="text-center setup-ask" id="setup_question3">
@ -121,6 +120,7 @@
automaticPatches: false,
mods: "cumcord",
inviteWebsocket: true,
mobileMode: false,
trayIcon: "ac_plug_colored",
performanceMode: "none"
});
@ -148,8 +148,8 @@
windowStyle: "default",
channel: options.channel,
armcordCSP: true,
autoLaunch: true,
minimizeToTray: true,
mobileMode: false,
automaticPatches: false,
performanceMode: "none",
trayIcon: "ac_plug_colored",
@ -165,7 +165,7 @@
armcordCSP: true,
minimizeToTray: true,
automaticPatches: false,
autoLaunch: true,
mobileMode: false,
mods: "none",
performanceMode: "none",
trayIcon: "ac_plug_colored",

View file

@ -58,9 +58,6 @@
case "ptb":
window.location.replace("https://ptb.discord.com/app");
break;
case "foss":
window.location.replace("https://dev.fosscord.com/app");
break;
case undefined:
window.location.replace("https://discord.com/app");
break;

View file

@ -50,7 +50,7 @@ export function registerIpc() {
var height= await getWindowState("height") ?? 600;
var isMaximized = await getWindowState("isMaximized") ?? false;
} catch (e) {
console.log("No window state file found. Fallbacking to default values.")
console.log("[Window state manager] No window state file found. Fallbacking to default values.")
mainWindow.setSize(800, 600);
}
if (isMaximized) {
@ -58,7 +58,7 @@ export function registerIpc() {
mainWindow.maximize()
} else {
mainWindow.setSize(width, height);
console.log("Not maximized.")
console.log("[Window state manager] Not maximized.")
}
});
ipcMain.on("restart", (event, arg) => {
@ -83,6 +83,9 @@ export function registerIpc() {
ipcMain.on("titlebar", (event, arg) => {
event.returnValue = customTitlebar;
});
ipcMain.on("mobileMode", async (event, arg) => {
event.returnValue = await getConfig("mobileMode");
});
ipcMain.on("shouldPatch", async (event, arg) => {
event.returnValue = await getConfig("automaticPatches");
});

View file

@ -26,6 +26,7 @@ if (process.platform == "linux") {
checkIfConfigExists();
injectElectronFlags();
app.whenReady().then(async () => {
async function init() {
switch (await getConfig("windowStyle")) {
case "default":
createCustomWindow();
@ -42,6 +43,8 @@ app.whenReady().then(async () => {
customTitlebar = true;
break;
}
}
await init()
session.fromPartition("some-partition").setPermissionRequestHandler((webContents, permission, callback) => {
if (permission === "notifications") {
// Approves the permissions request
@ -54,24 +57,6 @@ app.whenReady().then(async () => {
});
app.on("activate", async function () {
if (BrowserWindow.getAllWindows().length === 0)
switch (await getConfig("windowStyle")) {
case "default":
createCustomWindow();
break;
case "native":
createNativeWindow();
break;
case "discord":
createNativeWindow();
break;
default:
createCustomWindow();
break;
}
console.log("userDataPath = " + app.getPath("userData"));
await init()
});
});
app.on("window-all-closed", function () {
if (process.platform !== "darwin") app.quit();
});

19
src/preload/mobile.ts Normal file
View file

@ -0,0 +1,19 @@
import {ipcRenderer} from "electron";
import {addStyle} from "../utils";
import * as fs from "fs";
import * as path from "path";
export function injectMobileStuff() {
document.addEventListener("DOMContentLoaded", function (event) {
const mobileCSS = path.join(__dirname, "../", "/content/css/mobile.css");
addStyle(fs.readFileSync(mobileCSS, "utf8"));
var logo = document.getElementById("window-title");
logo!.addEventListener("click", () => {
if (ipcRenderer.sendSync("minimizeToTray") === true) {
ipcRenderer.send("win-hide");
} else if (ipcRenderer.sendSync("minimizeToTray") === false) {
ipcRenderer.send("win-quit");
}
});
});
}

View file

@ -6,6 +6,7 @@ import * as path from "path";
import {injectTitlebar} from "./titlebar";
import {sleep, addStyle, injectJS, addScript} from "../utils";
import {ipcRenderer} from "electron";
import {injectMobileStuff} from "./mobile";
var version = ipcRenderer.sendSync("get-app-version", "app-version");
async function updateLang() {
if (window.location.href.indexOf("setup.html") > -1) {
@ -37,6 +38,9 @@ if (window.location.href.indexOf("splash.html") > -1) {
if (ipcRenderer.sendSync("titlebar")) {
injectTitlebar();
}
if (ipcRenderer.sendSync("mobileMode")) {
injectMobileStuff();
}
sleep(5000).then(async () => {
const cssPath = path.join(__dirname, "../", "/content/css/discord.css");
addStyle(fs.readFileSync(cssPath, "utf8"));

View file

@ -40,12 +40,17 @@
<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" id="settings-mobileMode">Mobile mode</label>
<input class="tgl tgl-light left" id="mobile" type="checkbox" />
<label class="tgl-btn left" for="mobile"></label>
</div>
<div class="switch">
<select name="channel" id="channel" class="left">
<option value="stable">Stable</option>
<option value="canary">Canary</option>
<option value="ptb">PTB</option>
<option value="foss">Fosscord</option>
</select>
<p class="header" id="settings-channel">Discord channel:</p>
</div>
@ -89,6 +94,7 @@
);
document.getElementById("settings-patches").innerHTML = await settings.getLang("settings-patches");
document.getElementById("settings-tray").innerHTML = await settings.getLang("settings-tray");
document.getElementById("settings-mobileMode").innerHTML = await settings.getLang("settings-mobileMode");
document.getElementById("settings-theme").innerHTML = await settings.getLang("settings-theme");
//select stuff
document.getElementById("mod").options[3].text = await settings.getLang("settings-none");
@ -107,6 +113,7 @@
document.getElementById("csp").checked = await settings.get("armcordCSP");
document.getElementById("tray").checked = await settings.get("minimizeToTray");
document.getElementById("websocket").checked = await settings.get("inviteWebsocket");
document.getElementById("mobile").checked = await settings.get("mobileMode");
document.getElementById("patches").value = await settings.get("automaticPatches");
document.getElementById("mod").value = await settings.get("mods");
document.getElementById("channel").value = await settings.get("channel");
@ -123,6 +130,7 @@
minimizeToTray: document.getElementById("tray").checked,
automaticPatches: document.getElementById("patches").checked,
mods: document.getElementById("mod").value,
mobileMode: document.getElementById("mobile").checked,
inviteWebsocket: document.getElementById("websocket").checked,
performanceMode: document.getElementById("prfmMode").value,
trayIcon: document.getElementById("trayIcon").value,

View file

@ -2,22 +2,4 @@ import {app} from "electron";
import {mainWindow} from "./window";
//https://github.com/electron/electron/issues/1334#issuecomment-716080005
// TO-DO add more
app.on("web-contents-created", (webContentsCreatedEvent, webContents) => {
webContents.on("before-input-event", (beforeInputEvent, input) => {
// console.log('Main console::', input)
const {code, alt, control, shift, meta} = input;
// Shortcut: toggle devTools
if (shift && control && !alt && !meta && code === "KeyI") {
mainWindow.webContents.toggleDevTools();
}
// Shortcut: window reload
if (shift && control && !alt && !meta && code === "KeyR") {
mainWindow.reload();
}
// Shortcut: app reload
if (alt && control && !shift && !meta && code === "KeyR") {
app.relaunch();
app.exit();
}
});
});

View file

@ -1,5 +1,5 @@
import * as fs from "fs";
import { app, Menu, Tray } from "electron";
import { app, Menu, Tray, nativeImage} from "electron";
import { mainWindow } from "./window";
import { getConfig, getConfigLocation, setWindowState } from "./utils";
import * as path from "path";
@ -7,10 +7,13 @@ import { createSettingsWindow } from "./settings/main";
let tray: any = null;
app.whenReady().then(async () => {
let finishedSetup = (await getConfig("doneSetup"));
var trayIcon = (await getConfig("trayIcon")) ?? "ac_plug_colored";
let trayPath = nativeImage.createFromPath(path.join(__dirname, "../", `/assets/${trayIcon}.png`));
if(process.platform === "darwin" && trayPath.getSize().height > 22)
trayPath = trayIcon.resize({height: 22});
if ((await getConfig("windowStyle")) == "basic") {
var clientName = (await getConfig("clientName")) ?? "ArmCord";
var trayIcon = (await getConfig("trayIcon")) ?? "ac_plug_colored";
tray = new Tray(path.join(__dirname, "../", `/assets/${trayIcon}.png`));
tray = new Tray(trayPath);
const contextMenu = function () {
if (finishedSetup == false) {
return Menu.buildFromTemplate([
@ -57,8 +60,7 @@ app.whenReady().then(async () => {
tray.setContextMenu(contextMenu);
} else {
var clientName = (await getConfig("clientName")) ?? "ArmCord";
var trayIcon = (await getConfig("trayIcon")) ?? "ac_plug_colored";
tray = new Tray(path.join(__dirname, "../", `/assets/${trayIcon}.png`));
tray = new Tray(trayPath);
if (finishedSetup == false) {
const contextMenu = Menu.buildFromTemplate([
{

View file

@ -4,7 +4,7 @@ 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
//utility 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) {
const style = document.createElement("style");
style.textContent = styleString;
@ -43,6 +43,7 @@ export function setup() {
mods: "cumcord",
performanceMode: "none",
inviteWebsocket: true,
mobileMode: false,
trayIcon: "ac_plug_colored",
doneSetup: false
};
@ -104,9 +105,7 @@ export async function injectElectronFlags() {
}
}
export async function setLang(language: string) {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const langConfigFile = storagePath + "lang.json";
const langConfigFile = path.join(app.getPath("userData"), "/storage/") + "lang.json";
if (!fs.existsSync(langConfigFile)) {
fs.writeFileSync(langConfigFile, "{}", "utf-8");
}
@ -140,7 +139,15 @@ export async function getLang(object: string) {
}
let rawdata = fs.readFileSync(langPath, "utf-8");
let parsed = JSON.parse(rawdata);
if (parsed[object] == undefined) {
console.log(object + " is undefined in " + language)
langPath = path.join(__dirname, "../", "/assets/lang/en-US.json");
rawdata = fs.readFileSync(langPath, "utf-8");
parsed = JSON.parse(rawdata);
return parsed[object]
} else {
return parsed[object];
}
}
//ArmCord Window State manager
@ -165,9 +172,8 @@ export async function getWindowState(object: string) {
const settingsFile = storagePath + "window.json";
let rawdata = fs.readFileSync(settingsFile, "utf-8");
let returndata = JSON.parse(rawdata);
console.log(object + ": " + returndata[object]);
console.log("[Window state manager] " + object + ": " + returndata[object]);
return returndata[object];
}
//ArmCord Settings/Storage manager
@ -178,65 +184,36 @@ export interface Settings {
minimizeToTray: boolean;
automaticPatches: boolean;
mods: string;
mobileMode: boolean,
performanceMode: string;
inviteWebsocket: boolean;
trayIcon: string;
doneSetup: boolean;
}
export async function getConfig(object: string) {
try {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const settingsFile = storagePath + "settings.json";
let rawdata = fs.readFileSync(settingsFile, "utf-8");
let returndata = JSON.parse(rawdata);
console.log(object + ": " + returndata[object]);
return returndata[object];
} catch (e) {
console.log("Config probably doesn't exist yet. Returning setup value.");
firstRun = true;
return "setup";
}
}
export async function getConfigLocation() {
try {
export function getConfigLocation() {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
return storagePath + "settings.json";
} catch (e) {
console.log("Config probably doesn't exist yet. Returning setup value.");
firstRun = true;
return "setup";
}
}
export async function getConfig(object: string) {
let rawdata = fs.readFileSync(getConfigLocation(), "utf-8");
let returndata = JSON.parse(rawdata);
console.log("[Config manager] " + object + ": " + returndata[object]);
return returndata[object];
}
export async function setConfig(object: string, toSet: any) {
try {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const settingsFile = storagePath + "settings.json";
let rawdata = fs.readFileSync(settingsFile, "utf-8");
let rawdata = fs.readFileSync(getConfigLocation(), "utf-8");
let parsed = JSON.parse(rawdata);
parsed[object] = toSet;
let toSave = JSON.stringify(parsed);
fs.writeFileSync(settingsFile, toSave, "utf-8");
} catch (e) {
console.log("Config probably doesn't exist yet. Returning setup value.");
firstRun = true;
return "setup";
}
fs.writeFileSync(getConfigLocation(), toSave, "utf-8");
}
export async function setConfigBulk(object: Settings) {
try {
const userDataPath = app.getPath("userData");
const storagePath = path.join(userDataPath, "/storage/");
const settingsFile = storagePath + "settings.json";
let toSave = JSON.stringify(object);
fs.writeFileSync(settingsFile, toSave, "utf-8");
} catch (e) {
console.log("Config probably doesn't exist yet. Returning setup value.");
firstRun = true;
return "setup";
}
}
export async function checkIfConfigExists() {
const userDataPath = app.getPath("userData");
@ -250,26 +227,14 @@ 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");
}
firstRun = true;
} else {
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");
}
firstRun = true;
} 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

@ -25,12 +25,16 @@ async function doAfterDefiningTheWindow() {
var ignoreProtocolWarning = await getConfig("ignoreProtocolWarning");
checkIfConfigIsBroken();
registerIpc();
if (await getConfig("mobileMode")) {
mainWindow.webContents.userAgent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.149 Mobile Safari/537.36"
} else {
// A little sloppy but it works :p
if (osType == 'Windows_NT') {
osType = "Windows " + os.release().split('.')[0] + " (" + os.release() + ")";
}
mainWindow.webContents.userAgent = `Mozilla/5.0 (X11; ${osType} ${os.arch()}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36`; //fake useragent for screenshare to work
}
mainWindow.webContents.setWindowOpenHandler(({ url }) => {
if (url.startsWith("https:" || url.startsWith("http:") || url.startsWith("mailto:"))) {
shell.openExternal(url);
@ -114,36 +118,14 @@ async function doAfterDefiningTheWindow() {
})
console.log(contentPath);
if ((await getConfig("inviteWebsocket")) == true) {
startServer();
await startServer();
}
try {
mainWindow.loadFile(contentPath);
if (isSetup) {
await setLang(Intl.DateTimeFormat().resolvedOptions().locale)
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."
);
console.log(process.platform);
if (process.platform === "win32") {
if (firstRun) {
await setLang(Intl.DateTimeFormat().resolvedOptions().locale)
mainWindow.setSize(390, 470);
mainWindow.loadURL(`file://${__dirname}/content/setup.html`);
await mainWindow.loadFile(path.join(__dirname, "/content/setup.html"));
} else {
mainWindow.loadURL(`file://${__dirname}/content/splash.html`);
}
} else {
if (firstRun) {
await setLang(Intl.DateTimeFormat().resolvedOptions().locale)
mainWindow.setSize(390, 470);
mainWindow.loadURL(`file://${__dirname}/ts-out/content/setup.html`);
} else {
mainWindow.loadURL(`file://${__dirname}/ts-out/content/splash.html`);
}
}
await mainWindow.loadFile(path.join(__dirname, "/content/splash.html"));
}
}
export function createCustomWindow() {