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/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" } 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" } 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" } 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" } 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" } 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" } 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" } 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" } diff --git a/assets/lang/pt-BR.json b/assets/lang/pt-BR.json index 8f79330..e657eb5 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:", @@ -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" } 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" } 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" } 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..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) => { @@ -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/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/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 @@ +
+

+ + + +

Discord channel:

@@ -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/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/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..4e38cbc 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 }; @@ -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); - 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 @@ -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 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"); @@ -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"); - } } } } diff --git a/src/window.ts b/src/window.ts index 5a6fe4c..9570e94 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); @@ -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`); - } 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() {