aboutsummaryrefslogtreecommitdiffstats
path: root/src/electron
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2018-11-27 18:06:14 +0100
committerLibravatar Stefan Malzner <stefan@adlk.io>2018-11-27 18:06:14 +0100
commit62972747866740dae84fc7b519fcedd731572329 (patch)
tree3a74610caa47350ff6b3cc07482f8472f18c1764 /src/electron
parentFix listening key (diff)
downloadferdium-app-62972747866740dae84fc7b519fcedd731572329.tar.gz
ferdium-app-62972747866740dae84fc7b519fcedd731572329.tar.zst
ferdium-app-62972747866740dae84fc7b519fcedd731572329.zip
feat(App): Add proxy support for services
Diffstat (limited to 'src/electron')
-rw-r--r--src/electron/Settings.js24
-rw-r--r--src/electron/ipc-api/appIndicator.js2
-rw-r--r--src/electron/ipc-api/settings.js10
3 files changed, 25 insertions, 11 deletions
diff --git a/src/electron/Settings.js b/src/electron/Settings.js
index 7b04406a2..6ac3b9177 100644
--- a/src/electron/Settings.js
+++ b/src/electron/Settings.js
@@ -1,15 +1,21 @@
1import { observable, toJS } from 'mobx'; 1import { observable, toJS } from 'mobx';
2import { pathExistsSync, outputJsonSync, readJsonSync } from 'fs-extra'; 2import { pathExistsSync, outputJsonSync, readJsonSync } from 'fs-extra';
3import path from 'path';
3 4
4import { SETTINGS_PATH, DEFAULT_APP_SETTINGS } from '../config'; 5import { SETTINGS_PATH } from '../config';
5 6
6const debug = require('debug')('Franz:Settings'); 7const debug = require('debug')('Franz:Settings');
7 8
8export default class Settings { 9export default class Settings {
9 @observable store = DEFAULT_APP_SETTINGS; 10 type = '';
11 @observable store = {};
10 12
11 constructor() { 13 constructor(type, defaultState = {}) {
12 if (!pathExistsSync(SETTINGS_PATH)) { 14 this.type = type;
15 this.store = defaultState;
16 this.defaultState = defaultState;
17
18 if (!pathExistsSync(this.settingsFile)) {
13 this._writeFile(); 19 this._writeFile();
14 } else { 20 } else {
15 this._hydrate(); 21 this._hydrate();
@@ -31,16 +37,20 @@ export default class Settings {
31 } 37 }
32 38
33 _merge(settings) { 39 _merge(settings) {
34 return Object.assign(DEFAULT_APP_SETTINGS, this.store, settings); 40 return Object.assign(this.defaultState, this.store, settings);
35 } 41 }
36 42
37 _hydrate() { 43 _hydrate() {
38 this.store = this._merge(readJsonSync(SETTINGS_PATH)); 44 this.store = this._merge(readJsonSync(this.settingsFile));
39 debug('Hydrate store', toJS(this.store)); 45 debug('Hydrate store', toJS(this.store));
40 } 46 }
41 47
42 _writeFile() { 48 _writeFile() {
43 outputJsonSync(SETTINGS_PATH, this.store); 49 outputJsonSync(this.settingsFile, this.store);
44 debug('Write settings file', toJS(this.store)); 50 debug('Write settings file', toJS(this.store));
45 } 51 }
52
53 get settingsFile() {
54 return path.join(SETTINGS_PATH, `${this.type === 'app' ? 'settings' : this.type}.json`);
55 }
46} 56}
diff --git a/src/electron/ipc-api/appIndicator.js b/src/electron/ipc-api/appIndicator.js
index d31819068..e568bf35d 100644
--- a/src/electron/ipc-api/appIndicator.js
+++ b/src/electron/ipc-api/appIndicator.js
@@ -15,7 +15,7 @@ function getAsset(type, asset) {
15 15
16export default (params) => { 16export default (params) => {
17 autorun(() => { 17 autorun(() => {
18 isTrayIconEnabled = params.settings.get('enableSystemTray'); 18 isTrayIconEnabled = params.settings.app.get('enableSystemTray');
19 19
20 if (!isTrayIconEnabled) { 20 if (!isTrayIconEnabled) {
21 params.trayIcon.hide(); 21 params.trayIcon.hide();
diff --git a/src/electron/ipc-api/settings.js b/src/electron/ipc-api/settings.js
index 3eab68a91..ce006bb92 100644
--- a/src/electron/ipc-api/settings.js
+++ b/src/electron/ipc-api/settings.js
@@ -1,11 +1,15 @@
1import { ipcMain } from 'electron'; 1import { ipcMain } from 'electron';
2 2
3export default (params) => { 3export default (params) => {
4 ipcMain.on('getAppSettings', () => { 4 ipcMain.on('getAppSettings', (event, type) => {
5 params.mainWindow.webContents.send('appSettings', params.settings.all); 5 console.log('getAppSettings', type, params.settings[type].all);
6 params.mainWindow.webContents.send('appSettings', {
7 type,
8 data: params.settings[type].all,
9 });
6 }); 10 });
7 11
8 ipcMain.on('updateAppSettings', (event, args) => { 12 ipcMain.on('updateAppSettings', (event, args) => {
9 params.settings.set(args); 13 params.settings[args.type].set(args.data);
10 }); 14 });
11}; 15};