diff --git a/src/main/base/store.ts b/src/main/base/store.ts index db16f9b1..fef12bc8 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -2,6 +2,7 @@ import * as ElectronStore from 'electron-store'; import * as electron from "electron"; import {app} from "electron"; import fetch from "electron-fetch"; + export class Store { static cfg: ElectronStore; @@ -57,7 +58,7 @@ export class Store { "CommandOrControl", "G" ], - "songs" : [ + "songs": [ "CommandOrControl", "J" ], @@ -80,17 +81,17 @@ export class Store { ], "audioSettings": [ "CommandOrControl", - process.platform == "darwin" ? "Option" : (process.platform == "linux" ? "Shift": "Alt"), + process.platform == "darwin" ? "Option" : (process.platform == "linux" ? "Shift" : "Alt"), "A" ], "pluginMenu": [ "CommandOrControl", - process.platform == "darwin" ? "Option" : (process.platform == "linux" ? "Shift": "Alt"), + process.platform == "darwin" ? "Option" : (process.platform == "linux" ? "Shift" : "Alt"), "P" ], "castToDevices": [ "CommandOrControl", - process.platform == "darwin" ? "Option" : (process.platform == "linux" ? "Shift": "Alt"), + process.platform == "darwin" ? "Option" : (process.platform == "linux" ? "Shift" : "Alt"), "C" ], "settings": [ @@ -259,13 +260,7 @@ export class Store { } }, } - private migrations: any = { - '>=1.4.3': (store: ElectronStore) => { - if (typeof store.get('connectivity.discord_rpc') == 'number' || typeof store.get('connectivity.discord_rpc') == 'string') { - store.delete('connectivity.discord_rpc'); - } - }, - } + private migrations: any = {} private schema: ElectronStore.Schema = { "connectivity.discord_rpc": { type: 'object' @@ -278,57 +273,13 @@ export class Store { defaults: this.defaults, schema: this.schema, migrations: this.migrations, - clearInvalidConfig: true + clearInvalidConfig: false //disabled for now }); Store.cfg.set(this.mergeStore(this.defaults, Store.cfg.store)) this.ipcHandler(); } - /** - * Merge Configurations - * @param target The target configuration - * @param source The source configuration - */ - private mergeStore = (target: { [x: string]: any; }, source: { [x: string]: any; }) => { - // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties - for (const key of Object.keys(source)) { - if (key.includes('migrations')) { - continue; - } - if (source[key] instanceof Array) { - continue - } - if (source[key] instanceof Object) Object.assign(source[key], this.mergeStore(target[key], source[key])) - } - // Join `target` and modified `source` - Object.assign(target || {}, source) - return target - } - - - /** - * IPC Handler - */ - private ipcHandler(): void { - electron.ipcMain.handle('getStoreValue', (_event, key, defaultValue) => { - return (defaultValue ? Store.cfg.get(key, true) : Store.cfg.get(key)); - }); - - electron.ipcMain.handle('setStoreValue', (_event, key, value) => { - Store.cfg.set(key, value); - }); - - electron.ipcMain.on('getStore', (event) => { - event.returnValue = Store.cfg.store - }) - - electron.ipcMain.on('setStore', (_event, store) => { - Store.cfg.store = store - }) - } - - static pushToCloud(): void { if (Store.cfg.get('connectUser.auth') === null) return; var syncData = Object(); @@ -342,7 +293,7 @@ export class Store { plugins: Store.cfg.store.plugins }) } - + if (Store.cfg.get('connectUser.sync.settings')) { syncData.push({ general: Store.cfg.get('general'), @@ -366,4 +317,46 @@ export class Store { body: JSON.stringify(postBody) }) } + + /** + * Merge Configurations + * @param target The target configuration + * @param source The source configuration + */ + private mergeStore = (target: { [x: string]: any; }, source: { [x: string]: any; }) => { + // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties + for (const key of Object.keys(source)) { + if (key.includes('migrations')) { + continue; + } + if (source[key] instanceof Array) { + continue + } + if (source[key] instanceof Object) Object.assign(source[key], this.mergeStore(target[key], source[key])) + } + // Join `target` and modified `source` + Object.assign(target || {}, source) + return target + } + + /** + * IPC Handler + */ + private ipcHandler(): void { + electron.ipcMain.handle('getStoreValue', (_event, key, defaultValue) => { + return (defaultValue ? Store.cfg.get(key, true) : Store.cfg.get(key)); + }); + + electron.ipcMain.handle('setStoreValue', (_event, key, value) => { + Store.cfg.set(key, value); + }); + + electron.ipcMain.on('getStore', (event) => { + event.returnValue = Store.cfg.store + }) + + electron.ipcMain.on('setStore', (_event, store) => { + Store.cfg.store = store + }) + } }