diff --git a/assets/lang/id-ID.json b/assets/lang/id-ID.json index 51bef0a..f0535d3 100644 --- a/assets/lang/id-ID.json +++ b/assets/lang/id-ID.json @@ -14,7 +14,6 @@ "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 documentation.", "settings-theme": "ArmCord Theme:", - "settings-theme-tabs": "Tabs (experimental)", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-tray": "Minimize to tray", diff --git a/assets/lang/it-IT.json b/assets/lang/it-IT.json index 25d10d4..f0c9675 100644 --- a/assets/lang/it-IT.json +++ b/assets/lang/it-IT.json @@ -19,7 +19,6 @@ "settings-updater": "Controlla gli aggiornamenti", "settings-mod": "Client mod:", "settings-theme": "ArmCord Theme:", - "settings-theme-tabs": "Tabs (experimental)", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-patches": "Automatic Patches", diff --git a/assets/lang/nb-NO.json b/assets/lang/nb-NO.json index 29ed697..00bdd19 100644 --- a/assets/lang/nb-NO.json +++ b/assets/lang/nb-NO.json @@ -19,7 +19,6 @@ "settings-save": "Save settings", "settings-updater": "Check for updates", "settings-theme": "ArmCord Theme:", - "settings-theme-tabs": "Tabs (experimental)", "settings-theme-default": "Default", "settings-theme-native": "Native", "settings-patches": "Automatic Patches", diff --git a/assets/lang/nl-NL.json b/assets/lang/nl-NL.json index c981b8d..ebac8bc 100644 --- a/assets/lang/nl-NL.json +++ b/assets/lang/nl-NL.json @@ -20,7 +20,6 @@ "settings-updater": "Check voor updates", "settings-patches": "Automatische Patches", "settings-theme": "ArmCord Thema:", - "settings-theme-tabs": "Tabs (experimenteel)", "settings-theme-default": "Standaard", "settings-theme-native": "Native", "settings-invitewebsocket": "discord.gg support", diff --git a/assets/lang/pl-PL.json b/assets/lang/pl-PL.json index 4870b4f..05f840e 100644 --- a/assets/lang/pl-PL.json +++ b/assets/lang/pl-PL.json @@ -19,7 +19,6 @@ "settings-save": "Zapisz ustawienia", "settings-mod": "Modyfikacja klienta:", "settings-theme": "Motyw ArmCord:", - "settings-theme-tabs": "Karty (eksperymentalne)", "settings-theme-default": "Domyślny", "settings-theme-native": "Natywny", "settings-patches": "Automatyczne łatki", diff --git a/assets/lang/th-TH.json b/assets/lang/th-TH.json index e8a88e1..79db9f5 100644 --- a/assets/lang/th-TH.json +++ b/assets/lang/th-TH.json @@ -1,10 +1,10 @@ { - "loading_screen_start": "กำลังเริ่ม ArmCord…", + "loading_screen_start": "เริ่มต้น ArmCord…", "loading_screen_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองใหม่อีกครั้ง", "loading_screen_update": "ArmCord เวอร์ชันใหม่พร้อมใช้งานแล้ว โปรดอัปเดตเป็นเวอร์ชันล่าสุด", "setup_question1": "เลือกประเภทการติดตั้งที่คุณต้องการ:", - "setup_question1_answer1": "ติดตั้งแบบน้ำหนักเบา", - "setup_question1_answer2": "ติดตั้งแบบเต็ม", + "setup_question1_answer1": "ติดตั้งแบบรวดเร็ว", + "setup_question1_answer2": "การตั้งค่าเต็มรูปแบบ", "setup_offline": "ดูเหมือนว่าคุณออฟไลน์อยู่ โปรดเชื่อมต่ออินเทอร์เน็ตและลองใหม่อีกครั้ง", "setup_question2": "เลือกช่อง/อินสแตนส์ Discord:", "setup_question3": "ต้องการให้ ArmCord จัดการการติดตั้งมอดของไคลเอนต์หรือไม่?", diff --git a/src/ipc.ts b/src/ipc.ts index 5ad4e44..6d5af02 100644 --- a/src/ipc.ts +++ b/src/ipc.ts @@ -1,7 +1,7 @@ //ipc stuff import {app, ipcMain, shell, desktopCapturer} from "electron"; import {mainWindow} from "./window"; -import {setConfigBulk, getVersion, getConfig, setLang, getLang} from "./utils"; +import {setConfigBulk, getVersion, getConfig, setLang, getLang, getWindowState} from "./utils"; import {customTitlebar} from "./main"; import {createSettingsWindow} from "./settings/main"; export function registerIpc() { @@ -41,8 +41,22 @@ export function registerIpc() { ipcMain.on("get-app-version", (event) => { event.returnValue = getVersion(); }); - ipcMain.on("splashEnd", (event, arg) => { - mainWindow.setSize(800, 600); + ipcMain.on("splashEnd", async (event, arg) => { + try { + var width = await getWindowState("width") ?? 800; + 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.") + mainWindow.setSize(800, 600); + } + if (isMaximized) { + mainWindow.setSize(800, 600); //just so the whole thing doesn't cover whole screen + mainWindow.maximize() + } else { + mainWindow.setSize(width, height); + console.log("Not maximized.") + } }); ipcMain.on("restart", (event, arg) => { app.relaunch(); diff --git a/src/preload/bridge.ts b/src/preload/bridge.ts index 3a458ce..a4ea57d 100644 --- a/src/preload/bridge.ts +++ b/src/preload/bridge.ts @@ -15,7 +15,6 @@ contextBridge.exposeInMainWorld("armcord", { }, electron: process.versions.electron, channel: ipcRenderer.sendSync("channel"), - openTab: (number: number) => ipcRenderer.sendSync("openTab", number), setLang: (lang: string) => ipcRenderer.send("setLang", lang), getLang: (toGet: string) => ipcRenderer.invoke("getLang", toGet).then((result) => { diff --git a/src/tray.ts b/src/tray.ts index d690914..331b71f 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -1,9 +1,9 @@ -import {app, Menu, Tray} from "electron"; -import {mainWindow} from "./window"; -import {getConfig} from "./utils"; +import { app, Menu, Tray } from "electron"; +import { mainWindow } from "./window"; +import { getConfig, setWindowState } from "./utils"; import * as path from "path"; -import {createSettingsWindow} from "./settings/main"; -import {platform} from "process"; +import { createSettingsWindow } from "./settings/main"; +import { platform } from "process"; let tray: any = null; let defaultIcon = "ac_plug_colored"; app.whenReady().then(async () => { @@ -22,6 +22,12 @@ app.whenReady().then(async () => { { label: "Quit ArmCord", click: function () { + let [width, height] = mainWindow.getSize() + setWindowState({ + width: width, + height: height, + isMaximized: mainWindow.isMaximized() + }) app.quit(); } } @@ -64,6 +70,12 @@ app.whenReady().then(async () => { { label: "Quit ArmCord", click: function () { + let [width, height] = mainWindow.getSize() + setWindowState({ + width: width, + height: height, + isMaximized: mainWindow.isMaximized() + }) app.quit(); } } diff --git a/src/utils.ts b/src/utils.ts index c3b5bf2..213d44b 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,7 +1,7 @@ import * as fs from "fs"; -import {app, dialog} from "electron"; +import { app, dialog } from "electron"; import path from "path"; -import {defaultMaxListeners} from "events"; +import { defaultMaxListeners } from "events"; export var firstRun: boolean; export var isSetup: boolean; export var contentPath: string; @@ -137,6 +137,33 @@ export async function getLang(object: string) { let parsed = JSON.parse(rawdata); return parsed[object]; } + +//ArmCord Window State manager +export interface WindowState { + width: number; + height: number; + isMaximized: boolean; +} +export async function setWindowState(object: WindowState) { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const saveFile = storagePath + "window.json"; + if (!fs.existsSync(saveFile)) { + fs.writeFileSync(saveFile, "{}", "utf-8"); + } + let toSave = JSON.stringify(object); + fs.writeFileSync(saveFile, toSave, "utf-8"); +} +export async function getWindowState(object: string) { + const userDataPath = app.getPath("userData"); + const storagePath = path.join(userDataPath, "/storage/"); + const settingsFile = storagePath + "window.json"; + let rawdata = fs.readFileSync(settingsFile, "utf-8"); + let returndata = JSON.parse(rawdata); + console.log(object + ": " + returndata[object]); + return returndata[object]; + +} //ArmCord Settings/Storage manager export interface Settings { diff --git a/src/window.ts b/src/window.ts index d523314..ce77197 100644 --- a/src/window.ts +++ b/src/window.ts @@ -4,7 +4,7 @@ // I'm sorry for this mess but I'm not sure how to fix it. import {BrowserWindow, shell, app, dialog} from "electron"; import path from "path"; -import {checkIfConfigIsBroken, firstRun, getConfig, contentPath, isSetup, setConfig, setLang} from "./utils"; +import {checkIfConfigIsBroken, firstRun, getConfig, contentPath, isSetup, setConfig, setLang, setWindowState} from "./utils"; import {registerIpc} from "./ipc"; import startServer from "./socket"; import contextMenu from "electron-context-menu"; @@ -72,6 +72,12 @@ async function doAfterDefiningTheWindow() { return callback({}); }); mainWindow.on("close", async (e) => { + let [width, height] = mainWindow.getSize() + setWindowState({ + width: width, + height: height, + isMaximized: mainWindow.isMaximized() + }) if (await getConfig("minimizeToTray")) { e.preventDefault(); mainWindow.hide();