Automatic locale setting

This commit is contained in:
Core 2022-08-29 17:31:16 +01:00
parent a7586fd0db
commit 9dde8548a2
No known key found for this signature in database
GPG key ID: 2AB8327FBA02D1C0

View file

@ -1,7 +1,9 @@
import * as ElectronStore from "electron-store"; import * as ElectronStore from "electron-store";
import * as electron from "electron"; import {app, ipcMain} from "electron";
import { app } from "electron";
import fetch from "electron-fetch"; import fetch from "electron-fetch";
import {existsSync} from "fs";
import {join} from "path";
import {utils} from "./utils"
export class Store { export class Store {
static cfg: ElectronStore; static cfg: ElectronStore;
@ -13,7 +15,7 @@ export class Store {
}, },
general: { general: {
close_button_hide: false, close_button_hide: false,
language: "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future language: "en_US",
playbackNotifications: true, playbackNotifications: true,
resumeOnStartupBehavior: "local", resumeOnStartupBehavior: "local",
privateEnabled: false, privateEnabled: false,
@ -230,6 +232,7 @@ export class Store {
}; };
constructor() { constructor() {
this.defaults.general.language = this.checkLocale(app.getLocale().replace('-', '_')) ?? "en_US"
Store.cfg = new ElectronStore({ Store.cfg = new ElectronStore({
name: "cider-config", name: "cider-config",
defaults: this.defaults, defaults: this.defaults,
@ -266,8 +269,8 @@ export class Store {
} }
let postBody = { let postBody = {
id: Store.cfg.get("connectUser.id"), id: Store.cfg.get("connectUser.id"),
app: electron.app.getName(), app: app.getName(),
version: electron.app.isPackaged ? electron.app.getVersion() : "dev", version: app.isPackaged ? app.getVersion() : "dev",
syncData: syncData, syncData: syncData,
}; };
@ -305,20 +308,24 @@ export class Store {
* IPC Handler * IPC Handler
*/ */
private ipcHandler(): void { private ipcHandler(): void {
electron.ipcMain.handle("getStoreValue", (_event, key, defaultValue) => { ipcMain.handle("getStoreValue", (_event, key, defaultValue) => {
return defaultValue ? Store.cfg.get(key, true) : Store.cfg.get(key); return defaultValue ? Store.cfg.get(key, true) : Store.cfg.get(key);
}); });
electron.ipcMain.handle("setStoreValue", (_event, key, value) => { ipcMain.handle("setStoreValue", (_event, key, value) => {
Store.cfg.set(key, value); Store.cfg.set(key, value);
}); });
electron.ipcMain.on("getStore", (event) => { ipcMain.on("getStore", (event) => {
event.returnValue = Store.cfg.store; event.returnValue = Store.cfg.store;
}); });
electron.ipcMain.on("setStore", (_event, store) => { ipcMain.on("setStore", (_event, store) => {
Store.cfg.store = store; Store.cfg.store = store;
}); });
} }
private checkLocale(language: string) {
return (existsSync(join(utils.getPath("i18nPath"), `${language}.json`))) ? language : "en_US";
}
} }