aboutsummaryrefslogtreecommitdiffstats
path: root/src/stores/FeaturesStore.js
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2019-04-12 13:32:19 +0200
committerLibravatar Stefan Malzner <stefan@adlk.io>2019-04-12 13:32:19 +0200
commitf941074dd7520efb63e9507294df8c420715b9df (patch)
tree614d03296254f02fe93a67a5c3b2feef1446e3aa /src/stores/FeaturesStore.js
parentDon't invalidate user request on componentWillMount (diff)
parentfeat(App): Update electron to 4.1.4 (diff)
downloadferdium-app-f941074dd7520efb63e9507294df8c420715b9df.tar.gz
ferdium-app-f941074dd7520efb63e9507294df8c420715b9df.tar.zst
ferdium-app-f941074dd7520efb63e9507294df8c420715b9df.zip
Merge branch 'develop' into chore/streamline-dashboard
Diffstat (limited to 'src/stores/FeaturesStore.js')
-rw-r--r--src/stores/FeaturesStore.js29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
index e60d79075..6200c9a16 100644
--- a/src/stores/FeaturesStore.js
+++ b/src/stores/FeaturesStore.js
@@ -1,4 +1,9 @@
1import { computed, observable, reaction } from 'mobx'; 1import {
2 computed,
3 observable,
4 reaction,
5 runInAction,
6} from 'mobx';
2 7
3import Store from './lib/Store'; 8import Store from './lib/Store';
4import CachedRequest from './lib/CachedRequest'; 9import CachedRequest from './lib/CachedRequest';
@@ -7,6 +12,7 @@ import delayApp from '../features/delayApp';
7import spellchecker from '../features/spellchecker'; 12import spellchecker from '../features/spellchecker';
8import serviceProxy from '../features/serviceProxy'; 13import serviceProxy from '../features/serviceProxy';
9import basicAuth from '../features/basicAuth'; 14import basicAuth from '../features/basicAuth';
15import workspaces from '../features/workspaces';
10import shareFranz from '../features/shareFranz'; 16import shareFranz from '../features/shareFranz';
11import settingsWS from '../features/settingsWS'; 17import settingsWS from '../features/settingsWS';
12 18
@@ -17,13 +23,16 @@ export default class FeaturesStore extends Store {
17 23
18 @observable featuresRequest = new CachedRequest(this.api.features, 'features'); 24 @observable featuresRequest = new CachedRequest(this.api.features, 'features');
19 25
26 @observable features = Object.assign({}, DEFAULT_FEATURES_CONFIG);
27
20 async setup() { 28 async setup() {
21 this.registerReactions([ 29 this.registerReactions([
30 this._updateFeatures,
22 this._monitorLoginStatus.bind(this), 31 this._monitorLoginStatus.bind(this),
23 ]); 32 ]);
24 33
25 await this.featuresRequest._promise; 34 await this.featuresRequest._promise;
26 setTimeout(this._enableFeatures.bind(this), 1); 35 setTimeout(this._setupFeatures.bind(this), 1);
27 36
28 // single key reaction 37 // single key reaction
29 reaction(() => this.stores.user.data.isPremium, () => { 38 reaction(() => this.stores.user.data.isPremium, () => {
@@ -37,13 +46,16 @@ export default class FeaturesStore extends Store {
37 return this.defaultFeaturesRequest.execute().result || DEFAULT_FEATURES_CONFIG; 46 return this.defaultFeaturesRequest.execute().result || DEFAULT_FEATURES_CONFIG;
38 } 47 }
39 48
40 @computed get features() { 49 _updateFeatures = () => {
50 const features = Object.assign({}, DEFAULT_FEATURES_CONFIG);
41 if (this.stores.user.isLoggedIn) { 51 if (this.stores.user.isLoggedIn) {
42 return this.featuresRequest.execute().result || DEFAULT_FEATURES_CONFIG; 52 const requestResult = this.featuresRequest.execute().result;
53 Object.assign(features, requestResult);
43 } 54 }
44 55 runInAction('FeaturesStore::_updateFeatures', () => {
45 return DEFAULT_FEATURES_CONFIG; 56 this.features = features;
46 } 57 });
58 };
47 59
48 _monitorLoginStatus() { 60 _monitorLoginStatus() {
49 if (this.stores.user.isLoggedIn) { 61 if (this.stores.user.isLoggedIn) {
@@ -53,11 +65,12 @@ export default class FeaturesStore extends Store {
53 } 65 }
54 } 66 }
55 67
56 _enableFeatures() { 68 _setupFeatures() {
57 delayApp(this.stores, this.actions); 69 delayApp(this.stores, this.actions);
58 spellchecker(this.stores, this.actions); 70 spellchecker(this.stores, this.actions);
59 serviceProxy(this.stores, this.actions); 71 serviceProxy(this.stores, this.actions);
60 basicAuth(this.stores, this.actions); 72 basicAuth(this.stores, this.actions);
73 workspaces(this.stores, this.actions);
61 shareFranz(this.stores, this.actions); 74 shareFranz(this.stores, this.actions);
62 settingsWS(this.stores, this.actions); 75 settingsWS(this.stores, this.actions);
63 } 76 }