From d6cbbcba7da2f26f18c55145958c4641f97d556b Mon Sep 17 00:00:00 2001
From: smartfridge <37928912+smartfrigde@users.noreply.github.com>
Date: Mon, 11 Jul 2022 19:13:52 +0200
Subject: [PATCH 01/14] Add mobile mode
---
.idea/.gitignore | 5 +++++
.idea/ArmCord.iml | 12 ++++++++++++
.idea/modules.xml | 8 ++++++++
.idea/vcs.xml | 6 ++++++
assets/lang/en-US.json | 1 +
src/content/css/mobile.css | 6 ++++++
src/content/setup.html | 6 +++---
src/content/splash.html | 3 ---
src/ipc.ts | 3 +++
src/preload/mobile.ts | 19 +++++++++++++++++++
src/preload/preload.ts | 4 ++++
src/settings/settings.html | 10 +++++++++-
src/tray.ts | 12 +++++++-----
src/utils.ts | 15 +++++++++++++--
src/window.ts | 14 +++++++++-----
15 files changed, 105 insertions(+), 19 deletions(-)
create mode 100644 .idea/.gitignore
create mode 100644 .idea/ArmCord.iml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/vcs.xml
create mode 100644 src/content/css/mobile.css
create mode 100644 src/preload/mobile.ts
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/ArmCord.iml b/.idea/ArmCord.iml
new file mode 100644
index 0000000..0c8867d
--- /dev/null
+++ b/.idea/ArmCord.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..0f0b0aa
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json
index e598f49..5c963b1 100644
--- a/assets/lang/en-US.json
+++ b/assets/lang/en-US.json
@@ -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:",
diff --git a/src/content/css/mobile.css b/src/content/css/mobile.css
new file mode 100644
index 0000000..a71ed39
--- /dev/null
+++ b/src/content/css/mobile.css
@@ -0,0 +1,6 @@
+[aria-label~="Mute"] {
+ display: none;
+}
+[aria-label~="Deafen"] {
+ display: none;
+}
diff --git a/src/content/setup.html b/src/content/setup.html
index dfc317e..a19c248 100644
--- a/src/content/setup.html
+++ b/src/content/setup.html
@@ -31,7 +31,6 @@
-
@@ -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",
diff --git a/src/content/splash.html b/src/content/splash.html
index 90b6fcb..8bca30c 100644
--- a/src/content/splash.html
+++ b/src/content/splash.html
@@ -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;
diff --git a/src/ipc.ts b/src/ipc.ts
index 52e1c68..bc41125 100644
--- a/src/ipc.ts
+++ b/src/ipc.ts
@@ -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");
});
diff --git a/src/preload/mobile.ts b/src/preload/mobile.ts
new file mode 100644
index 0000000..213deb6
--- /dev/null
+++ b/src/preload/mobile.ts
@@ -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");
+ }
+ });
+ });
+}
diff --git a/src/preload/preload.ts b/src/preload/preload.ts
index 6089430..5f91140 100644
--- a/src/preload/preload.ts
+++ b/src/preload/preload.ts
@@ -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"));
diff --git a/src/settings/settings.html b/src/settings/settings.html
index 31e38ff..8b7ab13 100644
--- a/src/settings/settings.html
+++ b/src/settings/settings.html
@@ -40,12 +40,17 @@
+
+
+
+
+
+
@@ -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,
diff --git a/src/tray.ts b/src/tray.ts
index 9241e8e..3d8731a 100644
--- a/src/tray.ts
+++ b/src/tray.ts
@@ -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([
{
diff --git a/src/utils.ts b/src/utils.ts
index 6c0ef26..d51256c 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -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
};
@@ -140,7 +141,16 @@ export async function getLang(object: string) {
}
let rawdata = fs.readFileSync(langPath, "utf-8");
let parsed = JSON.parse(rawdata);
- return parsed[object];
+ 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
@@ -178,6 +188,7 @@ export interface Settings {
minimizeToTray: boolean;
automaticPatches: boolean;
mods: string;
+ mobileMode: boolean,
performanceMode: string;
inviteWebsocket: boolean;
trayIcon: string;
diff --git a/src/window.ts b/src/window.ts
index 5a6fe4c..07a9e89 100644
--- a/src/window.ts
+++ b/src/window.ts
@@ -25,12 +25,16 @@ async function doAfterDefiningTheWindow() {
var ignoreProtocolWarning = await getConfig("ignoreProtocolWarning");
checkIfConfigIsBroken();
registerIpc();
-
- // A little sloppy but it works :p
- if (osType == 'Windows_NT') {
- osType = "Windows " + os.release().split('.')[0] + " (" + os.release() + ")";
+ 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.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);
From 9c2b00d56fd91fa83fe5dfd47767159d36351f07 Mon Sep 17 00:00:00 2001
From: Rafael V
Date: Sun, 10 Jul 2022 17:55:04 +0000
Subject: [PATCH 02/14] 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/
---
assets/lang/pt-BR.json | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/assets/lang/pt-BR.json b/assets/lang/pt-BR.json
index 8f79330..d53e8d6 100644
--- a/assets/lang/pt-BR.json
+++ b/assets/lang/pt-BR.json
@@ -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:",
From 40dc67f0a853f42fd5ca0cf17ead4ab56704107c Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:56 +0000
Subject: [PATCH 03/14] 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/
---
assets/lang/fr-FR.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/fr-FR.json b/assets/lang/fr-FR.json
index b1891b4..2c486bf 100644
--- a/assets/lang/fr-FR.json
+++ b/assets/lang/fr-FR.json
@@ -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"
}
From 6e30ffa7bfd8eb2e5fff94b4692f9af3e43a687c Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:57 +0000
Subject: [PATCH 04/14] 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/
---
assets/lang/it-IT.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/it-IT.json b/assets/lang/it-IT.json
index f0c9675..8895906 100644
--- a/assets/lang/it-IT.json
+++ b/assets/lang/it-IT.json
@@ -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"
}
From b25ff8dec3119801fd48fad475ec1758ee134c55 Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:56 +0000
Subject: [PATCH 05/14] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?=
=?UTF-8?q?=20Bokm=C3=A5l)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently translated at 82.7% (24 of 29 strings)
Translation: ArmCord/ArmCord
Translate-URL: https://hosted.weblate.org/projects/armcord/armcord/nb_NO/
---
assets/lang/nb-NO.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/nb-NO.json b/assets/lang/nb-NO.json
index 00bdd19..3066c0f 100644
--- a/assets/lang/nb-NO.json
+++ b/assets/lang/nb-NO.json
@@ -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"
}
From 7afb3962dc4b99b2b0a3ebf9bb6d7f4ca117f566 Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:56 +0000
Subject: [PATCH 06/14] 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/
---
assets/lang/nl-NL.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/nl-NL.json b/assets/lang/nl-NL.json
index ebac8bc..fd83845 100644
--- a/assets/lang/nl-NL.json
+++ b/assets/lang/nl-NL.json
@@ -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"
}
From 69012c95a030e5617810bceaf577aed2f526353a Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:57 +0000
Subject: [PATCH 07/14] 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/
---
assets/lang/pl-PL.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json
index 05f840e..4fa3eff 100644
--- a/assets/lang/pl-PL.json
+++ b/assets/lang/pl-PL.json
@@ -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"
}
From 56c7b68c47847f0933725ef2a6193f2324456eef Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:57 +0000
Subject: [PATCH 08/14] 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/
---
assets/lang/id-ID.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/id-ID.json b/assets/lang/id-ID.json
index e09518f..adbbcae 100644
--- a/assets/lang/id-ID.json
+++ b/assets/lang/id-ID.json
@@ -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"
}
From db9bfbb269776de0dcd0758b813f75f113221b19 Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:56 +0000
Subject: [PATCH 09/14] 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/
---
assets/lang/es-419.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/es-419.json b/assets/lang/es-419.json
index 194282e..1eec53a 100644
--- a/assets/lang/es-419.json
+++ b/assets/lang/es-419.json
@@ -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"
}
From e946615770a944625d4665f4bfdd83e7b2fb750f Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:56 +0000
Subject: [PATCH 10/14] 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/
---
assets/lang/th-TH.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json
index 698ac35..67c83b7 100644
--- a/assets/lang/th-TH.json
+++ b/assets/lang/th-TH.json
@@ -26,5 +26,6 @@
"settings-mod": "ไคลแอนต์มอด:",
"settings-none": "ไม่มี",
"settings-save": "บันทึกการตั้งค่า",
- "settings-updater": "ตรวจหาการอัปเดต"
+ "settings-updater": "ตรวจหาการอัปเดต",
+ "settings-mobileMode": "Mobile mode"
}
From efe835be04c3b88974b7730ec0b41098f737edcc Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:56 +0000
Subject: [PATCH 11/14] 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/
---
assets/lang/fa-IR.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json
index 41039ef..1566cf5 100644
--- a/assets/lang/fa-IR.json
+++ b/assets/lang/fa-IR.json
@@ -26,5 +26,6 @@
"settings-prfmMode-battery": "ذخیره برای باتری",
"settings-none": "هیچکدام",
"settings-save": "ذخیره تنظیمات",
- "settings-updater": "بررسی برای بروزرسانی"
+ "settings-updater": "بررسی برای بروزرسانی",
+ "settings-mobileMode": "Mobile mode"
}
From a3ac768f2564a9b560a38a976f4e08b39fead739 Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:57 +0000
Subject: [PATCH 12/14] 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/
---
assets/lang/ru-RU.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/ru-RU.json b/assets/lang/ru-RU.json
index af280da..6cca053 100644
--- a/assets/lang/ru-RU.json
+++ b/assets/lang/ru-RU.json
@@ -26,5 +26,6 @@
"settings-prfmMode-battery": "Батарея",
"settings-none": "Ничего",
"settings-save": "Сохранить настройки",
- "settings-updater": "Проверить наличие обновлений"
+ "settings-updater": "Проверить наличие обновлений",
+ "settings-mobileMode": "Mobile mode"
}
From 251f4d55ff1130514909fcce24e52d770ce42212 Mon Sep 17 00:00:00 2001
From: Anonymous
Date: Mon, 11 Jul 2022 17:17:57 +0000
Subject: [PATCH 13/14] 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/
---
assets/lang/pt-BR.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/assets/lang/pt-BR.json b/assets/lang/pt-BR.json
index d53e8d6..e657eb5 100644
--- a/assets/lang/pt-BR.json
+++ b/assets/lang/pt-BR.json
@@ -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"
}
From 0ebaa5627e2955ffd14d0efec59ca732c80da40c Mon Sep 17 00:00:00 2001
From: smartfridge <37928912+smartfrigde@users.noreply.github.com>
Date: Mon, 11 Jul 2022 20:19:50 +0200
Subject: [PATCH 14/14] code cleanup
---
src/ipc.ts | 4 +--
src/main.ts | 53 ++++++++++------------------
src/shortcuts.ts | 20 +----------
src/utils.ts | 92 ++++++++++++------------------------------------
src/window.ts | 36 ++++---------------
5 files changed, 52 insertions(+), 153 deletions(-)
diff --git a/src/ipc.ts b/src/ipc.ts
index bc41125..ad8cc6a 100644
--- a/src/ipc.ts
+++ b/src/ipc.ts
@@ -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) => {
diff --git a/src/main.ts b/src/main.ts
index e2def19..36bb830 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -26,22 +26,25 @@ if (process.platform == "linux") {
checkIfConfigExists();
injectElectronFlags();
app.whenReady().then(async () => {
- switch (await getConfig("windowStyle")) {
- case "default":
- createCustomWindow();
- customTitlebar = true;
- break;
- case "native":
- createNativeWindow();
- break;
- case "basic":
- createNativeWindow();
- break;
- default:
- createCustomWindow();
- customTitlebar = true;
- break;
+ async function init() {
+ switch (await getConfig("windowStyle")) {
+ case "default":
+ createCustomWindow();
+ customTitlebar = true;
+ break;
+ case "native":
+ createNativeWindow();
+ break;
+ case "basic":
+ createNativeWindow();
+ break;
+ default:
+ createCustomWindow();
+ 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();
-});
diff --git a/src/shortcuts.ts b/src/shortcuts.ts
index ba500d5..4d841b9 100644
--- a/src/shortcuts.ts
+++ b/src/shortcuts.ts
@@ -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();
- }
- });
-});
+
diff --git a/src/utils.ts b/src/utils.ts
index d51256c..4e38cbc 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -105,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");
}
@@ -150,7 +148,6 @@ export async function getLang(object: string) {
} else {
return parsed[object];
}
-
}
//ArmCord Window State manager
@@ -175,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
@@ -194,60 +190,30 @@ export interface Settings {
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 function getConfigLocation() {
+ const userDataPath = app.getPath("userData");
+ const storagePath = path.join(userDataPath, "/storage/");
+ return storagePath + "settings.json";
}
-export async function getConfigLocation() {
- try {
- 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 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";
- }
+ let rawdata = fs.readFileSync(getConfigLocation(), "utf-8");
+ let parsed = JSON.parse(rawdata);
+ parsed[object] = toSet;
+ let toSave = JSON.stringify(parsed);
+ 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";
- }
+ 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");
}
export async function checkIfConfigExists() {
const userDataPath = app.getPath("userData");
@@ -261,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");
- }
}
}
}
diff --git a/src/window.ts b/src/window.ts
index 07a9e89..9570e94 100644
--- a/src/window.ts
+++ b/src/window.ts
@@ -118,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`);
- } 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`);
- }
- }
+ if (firstRun) {
+ await setLang(Intl.DateTimeFormat().resolvedOptions().locale)
+ mainWindow.setSize(390, 470);
+ await mainWindow.loadFile(path.join(__dirname, "/content/setup.html"));
+ } else {
+ await mainWindow.loadFile(path.join(__dirname, "/content/splash.html"));
}
}
export function createCustomWindow() {