diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/ArmCord.iml b/.idea/ArmCord.iml deleted file mode 100644 index 0c8867d..0000000 --- a/.idea/ArmCord.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 0f0b0aa..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 5c963b1..e598f49 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -18,7 +18,6 @@ "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 1eec53a..194282e 100644 --- a/assets/lang/es-419.json +++ b/assets/lang/es-419.json @@ -26,6 +26,5 @@ "settings-prfmMode-battery": "Batería", "settings-none": "Ninguna", "settings-save": "Guardar ajustes", - "settings-updater": "Buscar una actualización", - "settings-mobileMode": "Mobile mode" + "settings-updater": "Buscar una actualización" } diff --git a/assets/lang/fa-IR.json b/assets/lang/fa-IR.json index 1566cf5..41039ef 100644 --- a/assets/lang/fa-IR.json +++ b/assets/lang/fa-IR.json @@ -26,6 +26,5 @@ "settings-prfmMode-battery": "ذخیره برای باتری", "settings-none": "هیچکدام", "settings-save": "ذخیره تنظیمات", - "settings-updater": "بررسی برای بروزرسانی", - "settings-mobileMode": "Mobile mode" + "settings-updater": "بررسی برای بروزرسانی" } diff --git a/assets/lang/fr-FR.json b/assets/lang/fr-FR.json index 2c486bf..b1891b4 100644 --- a/assets/lang/fr-FR.json +++ b/assets/lang/fr-FR.json @@ -26,6 +26,5 @@ "settings-prfmMode": "Mode performance :", "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Batterie", - "settings-none": "Aucun", - "settings-mobileMode": "Mobile mode" + "settings-none": "Aucun" } diff --git a/assets/lang/id-ID.json b/assets/lang/id-ID.json index adbbcae..e09518f 100644 --- a/assets/lang/id-ID.json +++ b/assets/lang/id-ID.json @@ -26,6 +26,5 @@ "settings-prfmMode": "mode kinerja:", "settings-prfmMode-performance": "kinerja", "settings-prfmMode-battery": "Baterai", - "settings-none": "tidak ada", - "settings-mobileMode": "Mobile mode" + "settings-none": "tidak ada" } diff --git a/assets/lang/it-IT.json b/assets/lang/it-IT.json index 8895906..f0c9675 100644 --- a/assets/lang/it-IT.json +++ b/assets/lang/it-IT.json @@ -26,6 +26,5 @@ "settings-prfmMode": "Performance mode:", "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Battery", - "settings-none": "None", - "settings-mobileMode": "Mobile mode" + "settings-none": "None" } diff --git a/assets/lang/nb-NO.json b/assets/lang/nb-NO.json index 3066c0f..00bdd19 100644 --- a/assets/lang/nb-NO.json +++ b/assets/lang/nb-NO.json @@ -26,6 +26,5 @@ "settings-prfmMode": "Performance mode:", "settings-prfmMode-performance": "Performance", "settings-prfmMode-battery": "Battery", - "settings-none": "None", - "settings-mobileMode": "Mobile mode" + "settings-none": "None" } diff --git a/assets/lang/nl-NL.json b/assets/lang/nl-NL.json index fd83845..ebac8bc 100644 --- a/assets/lang/nl-NL.json +++ b/assets/lang/nl-NL.json @@ -26,6 +26,5 @@ "settings-none": "None", "settings-prfmMode": "Performance mode:", "settings-prfmMode-performance": "Performance", - "settings-prfmMode-battery": "Battery", - "settings-mobileMode": "Mobile mode" + "settings-prfmMode-battery": "Battery" } diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json index 4fa3eff..05f840e 100644 --- a/assets/lang/pl-PL.json +++ b/assets/lang/pl-PL.json @@ -26,6 +26,5 @@ "settings-prfmMode": "Tryb wydajności:", "settings-prfmMode-performance": "Wydajny", "settings-prfmMode-battery": "Bateria", - "settings-none": "Nic/Brak", - "settings-mobileMode": "Mobile mode" + "settings-none": "Nic/Brak" } diff --git a/assets/lang/pt-BR.json b/assets/lang/pt-BR.json index e657eb5..8f79330 100644 --- a/assets/lang/pt-BR.json +++ b/assets/lang/pt-BR.json @@ -1,24 +1,24 @@ { - "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:", + "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:", "settings-invitewebsocket": "Invite Websocket", "settings-mod": "Client mod:", "settings-prfmMode": "Performance mode:", @@ -26,6 +26,5 @@ "settings-prfmMode-battery": "Battery", "settings-none": "None", "settings-save": "Save Settings", - "settings-updater": "Check for updates", - "settings-mobileMode": "Mobile mode" + "settings-updater": "Check for updates" } diff --git a/assets/lang/ru-RU.json b/assets/lang/ru-RU.json index 6cca053..af280da 100644 --- a/assets/lang/ru-RU.json +++ b/assets/lang/ru-RU.json @@ -26,6 +26,5 @@ "settings-prfmMode-battery": "Батарея", "settings-none": "Ничего", "settings-save": "Сохранить настройки", - "settings-updater": "Проверить наличие обновлений", - "settings-mobileMode": "Mobile mode" + "settings-updater": "Проверить наличие обновлений" } diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json index 67c83b7..698ac35 100644 --- a/assets/lang/th-TH.json +++ b/assets/lang/th-TH.json @@ -26,6 +26,5 @@ "settings-mod": "ไคลแอนต์มอด:", "settings-none": "ไม่มี", "settings-save": "บันทึกการตั้งค่า", - "settings-updater": "ตรวจหาการอัปเดต", - "settings-mobileMode": "Mobile mode" + "settings-updater": "ตรวจหาการอัปเดต" } diff --git a/src/content/css/mobile.css b/src/content/css/mobile.css deleted file mode 100644 index a71ed39..0000000 --- a/src/content/css/mobile.css +++ /dev/null @@ -1,6 +0,0 @@ -[aria-label~="Mute"] { - display: none; -} -[aria-label~="Deafen"] { - display: none; -} diff --git a/src/content/setup.html b/src/content/setup.html index a19c248..dfc317e 100644 --- a/src/content/setup.html +++ b/src/content/setup.html @@ -31,6 +31,7 @@ +

@@ -120,7 +121,6 @@ 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, - mobileMode: false, + autoLaunch: true, mods: "none", performanceMode: "none", trayIcon: "ac_plug_colored", diff --git a/src/content/splash.html b/src/content/splash.html index 8bca30c..90b6fcb 100644 --- a/src/content/splash.html +++ b/src/content/splash.html @@ -58,6 +58,9 @@ 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 ad8cc6a..52e1c68 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("[Window state manager] No window state file found. Fallbacking to default values.") + console.log("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("[Window state manager] Not maximized.") + console.log("Not maximized.") } }); ipcMain.on("restart", (event, arg) => { @@ -83,9 +83,6 @@ 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 36bb830..e2def19 100644 --- a/src/main.ts +++ b/src/main.ts @@ -26,25 +26,22 @@ if (process.platform == "linux") { checkIfConfigExists(); injectElectronFlags(); app.whenReady().then(async () => { - 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; - } + 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 @@ -57,6 +54,24 @@ app.whenReady().then(async () => { }); app.on("activate", async function () { if (BrowserWindow.getAllWindows().length === 0) - await init() + 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")); }); }); + +app.on("window-all-closed", function () { + if (process.platform !== "darwin") app.quit(); +}); diff --git a/src/preload/mobile.ts b/src/preload/mobile.ts deleted file mode 100644 index 213deb6..0000000 --- a/src/preload/mobile.ts +++ /dev/null @@ -1,19 +0,0 @@ -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 5f91140..6089430 100644 --- a/src/preload/preload.ts +++ b/src/preload/preload.ts @@ -6,7 +6,6 @@ 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) { @@ -38,9 +37,6 @@ 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 8b7ab13..31e38ff 100644 --- a/src/settings/settings.html +++ b/src/settings/settings.html @@ -40,17 +40,12 @@ -
-

- - - -

Discord channel:

@@ -94,7 +89,6 @@ ); 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"); @@ -113,7 +107,6 @@ 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"); @@ -130,7 +123,6 @@ 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 4d841b9..ba500d5 100644 --- a/src/shortcuts.ts +++ b/src/shortcuts.ts @@ -2,4 +2,22 @@ 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 3d8731a..9241e8e 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -1,5 +1,5 @@ import * as fs from "fs"; -import { app, Menu, Tray, nativeImage} from "electron"; +import { app, Menu, Tray } from "electron"; import { mainWindow } from "./window"; import { getConfig, getConfigLocation, setWindowState } from "./utils"; import * as path from "path"; @@ -7,13 +7,10 @@ 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"; - tray = new Tray(trayPath); + var trayIcon = (await getConfig("trayIcon")) ?? "ac_plug_colored"; + tray = new Tray(path.join(__dirname, "../", `/assets/${trayIcon}.png`)); const contextMenu = function () { if (finishedSetup == false) { return Menu.buildFromTemplate([ @@ -60,7 +57,8 @@ app.whenReady().then(async () => { tray.setContextMenu(contextMenu); } else { var clientName = (await getConfig("clientName")) ?? "ArmCord"; - tray = new Tray(trayPath); + var trayIcon = (await getConfig("trayIcon")) ?? "ac_plug_colored"; + tray = new Tray(path.join(__dirname, "../", `/assets/${trayIcon}.png`)); if (finishedSetup == false) { const contextMenu = Menu.buildFromTemplate([ { diff --git a/src/utils.ts b/src/utils.ts index 4e38cbc..6c0ef26 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; -//utility functions that are used all over the codebase or just too obscure to be put in the file used in +//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) { const style = document.createElement("style"); style.textContent = styleString; @@ -43,7 +43,6 @@ export function setup() { mods: "cumcord", performanceMode: "none", inviteWebsocket: true, - mobileMode: false, trayIcon: "ac_plug_colored", doneSetup: false }; @@ -105,7 +104,9 @@ export async function injectElectronFlags() { } } export async function setLang(language: string) { - const langConfigFile = path.join(app.getPath("userData"), "/storage/") + "lang.json"; + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const langConfigFile = storagePath + "lang.json"; if (!fs.existsSync(langConfigFile)) { fs.writeFileSync(langConfigFile, "{}", "utf-8"); } @@ -139,15 +140,7 @@ 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]; - } + return parsed[object]; } //ArmCord Window State manager @@ -172,8 +165,9 @@ 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("[Window state manager] " + object + ": " + returndata[object]); + console.log(object + ": " + returndata[object]); return returndata[object]; + } //ArmCord Settings/Storage manager @@ -184,36 +178,65 @@ export interface Settings { minimizeToTray: boolean; automaticPatches: boolean; mods: string; - mobileMode: boolean, performanceMode: string; inviteWebsocket: boolean; trayIcon: string; doneSetup: boolean; } -export function getConfigLocation() { - const userDataPath = app.getPath("userData"); - const storagePath = path.join(userDataPath, "/storage/"); - return storagePath + "settings.json"; -} 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]; + 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 { + 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 setConfig(object: string, toSet: any) { - 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"); + 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"; + } } export async function setConfigBulk(object: Settings) { - 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"); + 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"); @@ -227,14 +250,26 @@ export async function checkIfConfigExists() { } console.log("First run of the ArmCord. Starting setup."); setup(); - firstRun = true; + isSetup = true; + contentPath = path.join(__dirname, "/content/setup.html"); + if (!contentPath.includes("ts-out")) { + contentPath = path.join(__dirname, "/ts-out/content/setup.html"); + } } else { if ((await getConfig("doneSetup")) == false) { console.log("First run of the ArmCord. Starting setup."); setup(); - firstRun = true; + isSetup = true; + contentPath = path.join(__dirname, "/content/setup.html"); + if (!contentPath.includes("ts-out")) { + contentPath = path.join(__dirname, "/ts-out/content/setup.html"); + } } else { console.log("ArmCord has been run before. Skipping setup."); + contentPath = path.join(__dirname, "/content/splash.html"); + if (!contentPath.includes("ts-out")) { + contentPath = path.join(__dirname, "/ts-out/content/splash.html"); + } } } } diff --git a/src/window.ts b/src/window.ts index 9570e94..5a6fe4c 100644 --- a/src/window.ts +++ b/src/window.ts @@ -25,16 +25,12 @@ 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 - } + // 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); @@ -118,14 +114,36 @@ async function doAfterDefiningTheWindow() { }) console.log(contentPath); if ((await getConfig("inviteWebsocket")) == true) { - await startServer(); + startServer(); } - 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")); + 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`); + } + } } } export function createCustomWindow() {