aboutsummaryrefslogtreecommitdiffstats
path: root/src/stores/FeaturesStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/stores/FeaturesStore.js')
-rw-r--r--src/stores/FeaturesStore.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
new file mode 100644
index 000000000..f788c347d
--- /dev/null
+++ b/src/stores/FeaturesStore.js
@@ -0,0 +1,36 @@
1import { computed, observable } from 'mobx';
2
3import Store from './lib/Store';
4import CachedRequest from './lib/CachedRequest';
5
6export default class FeaturesStore extends Store {
7 @observable defaultFeaturesRequest = new CachedRequest(this.api.features, 'default');
8 @observable featuresRequest = new CachedRequest(this.api.features, 'features');
9
10 setup() {
11 this.registerReactions([
12 this._monitorLoginStatus.bind(this),
13 this._debugFeatures.bind(this),
14 ]);
15 }
16
17 @computed get features() {
18 if (this.stores.user.isLoggedIn) {
19 return this.featuresRequest.execute().result || {};
20 }
21
22 return this.defaultFeaturesRequest.execute().result || {};
23 }
24
25 _debugFeatures() {
26 console.log(this.features);
27 }
28
29 _monitorLoginStatus() {
30 if (this.stores.user.isLoggedIn) {
31 this.featuresRequest.invalidate({ immediately: true });
32 } else {
33 this.defaultFeaturesRequest.invalidate({ immediately: true });
34 }
35 }
36}