aboutsummaryrefslogtreecommitdiffstats
path: root/src/features
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/features
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/features')
-rw-r--r--src/features/delayApp/index.js4
-rw-r--r--src/features/serviceProxy/index.js56
-rw-r--r--src/features/spellchecker/index.js3
3 files changed, 59 insertions, 4 deletions
diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js
index 910b54959..334433df8 100644
--- a/src/features/delayApp/index.js
+++ b/src/features/delayApp/index.js
@@ -38,8 +38,8 @@ export default function init(stores) {
38 let shownAfterLaunch = false; 38 let shownAfterLaunch = false;
39 let timeLastDelay = moment(); 39 let timeLastDelay = moment();
40 40
41 config.delayOffset = globalConfig.delayOffset || DEFAULT_DELAY_OFFSET; 41 config.delayOffset = globalConfig.delayOffset !== undefined ? globalConfig.delayOffset : DEFAULT_DELAY_OFFSET;
42 config.delayDuration = globalConfig.wait || DEFAULT_DELAY_DURATION; 42 config.delayDuration = globalConfig.wait !== undefined ? globalConfig.wait : DEFAULT_DELAY_DURATION;
43 43
44 autorun(() => { 44 autorun(() => {
45 const diff = moment().diff(timeLastDelay); 45 const diff = moment().diff(timeLastDelay);
diff --git a/src/features/serviceProxy/index.js b/src/features/serviceProxy/index.js
new file mode 100644
index 000000000..edb1c9367
--- /dev/null
+++ b/src/features/serviceProxy/index.js
@@ -0,0 +1,56 @@
1import { autorun, reaction, observable } from 'mobx';
2import { remote } from 'electron';
3
4const { session } = remote;
5
6const debug = require('debug')('Franz:feature:serviceProxy');
7
8const DEFAULT_ENABLED = false;
9const DEFAULT_IS_PREMIUM = true;
10
11export const config = observable({
12 isEnabled: DEFAULT_ENABLED,
13 isPremium: DEFAULT_IS_PREMIUM,
14});
15
16export default function init(stores) {
17 reaction(
18 () => stores.features.features.isServiceProxyEnabled,
19 (enabled, r) => {
20 if (enabled) {
21 debug('Initializing `serviceProxy` feature');
22
23 // Dispose the reaction to run this only once
24 r.dispose();
25
26 const { isServiceProxyEnabled, isServiceProxyPremiumFeature } = stores.features.features;
27
28 config.isEnabled = isServiceProxyEnabled !== undefined ? isServiceProxyEnabled : DEFAULT_ENABLED;
29 config.isPremium = isServiceProxyPremiumFeature !== undefined ? isServiceProxyPremiumFeature : DEFAULT_IS_PREMIUM;
30
31 autorun(() => {
32 const services = stores.services.all;
33 const isPremiumUser = stores.user.isPremium;
34
35 if (config.isPremium && !isPremiumUser) return;
36
37 services.forEach((service) => {
38 const s = session.fromPartition(`persist:service-${service.id}`);
39 let proxyHost = 'direct://';
40
41 const serviceProxyConfig = stores.settings.proxy[service.id];
42
43 if (serviceProxyConfig && serviceProxyConfig.isEnabled && serviceProxyConfig.host) {
44 proxyHost = serviceProxyConfig.host;
45 }
46
47 s.setProxy({ proxyRules: proxyHost }, (e) => {
48 debug(`Using proxy "${proxyHost}" for "${service.name}" (${service.id})`, e);
49 });
50 });
51 });
52 }
53 },
54 );
55}
56
diff --git a/src/features/spellchecker/index.js b/src/features/spellchecker/index.js
index 9336f4074..8b3fb7e00 100644
--- a/src/features/spellchecker/index.js
+++ b/src/features/spellchecker/index.js
@@ -20,10 +20,9 @@ export default function init(stores) {
20 20
21 const { isSpellcheckerPremiumFeature } = stores.features.features; 21 const { isSpellcheckerPremiumFeature } = stores.features.features;
22 22
23 config.isPremiumFeature = isSpellcheckerPremiumFeature || DEFAULT_IS_PREMIUM_FEATURE; 23 config.isPremiumFeature = isSpellcheckerPremiumFeature !== undefined ? isSpellcheckerPremiumFeature : DEFAULT_IS_PREMIUM_FEATURE;
24 24
25 autorun(() => { 25 autorun(() => {
26 console.log('FEATURE spellchecker autorun', stores.user.data.isPremium, config.isPremiumFeature);
27 if (!stores.user.data.isPremium && config.isPremiumFeature) { 26 if (!stores.user.data.isPremium && config.isPremiumFeature) {
28 debug('Override settings.spellcheckerEnabled flag to false'); 27 debug('Override settings.spellcheckerEnabled flag to false');
29 28