aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/api/FeaturesApi.js9
-rw-r--r--src/api/RecipesApi.js2
-rw-r--r--src/api/index.js2
-rw-r--r--src/api/server/ServerApi.js15
-rw-r--r--src/stores/AppStore.js3
-rw-r--r--src/stores/FeaturesStore.js18
-rw-r--r--src/stores/index.js2
7 files changed, 50 insertions, 1 deletions
diff --git a/src/api/FeaturesApi.js b/src/api/FeaturesApi.js
new file mode 100644
index 000000000..5749ab336
--- /dev/null
+++ b/src/api/FeaturesApi.js
@@ -0,0 +1,9 @@
1export default class FeaturesApi {
2 constructor(server) {
3 this.server = server;
4 }
5
6 defaults() {
7 return this.server.getDefaultFeatures();
8 }
9}
diff --git a/src/api/RecipesApi.js b/src/api/RecipesApi.js
index 0573dacaf..800888b00 100644
--- a/src/api/RecipesApi.js
+++ b/src/api/RecipesApi.js
@@ -1,4 +1,4 @@
1export default class ServicesApi { 1export default class RecipesApi {
2 constructor(server) { 2 constructor(server) {
3 this.server = server; 3 this.server = server;
4 } 4 }
diff --git a/src/api/index.js b/src/api/index.js
index 3fc18c4b5..3c87cc087 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -6,12 +6,14 @@ import UserApi from './UserApi';
6import LocalApi from './LocalApi'; 6import LocalApi from './LocalApi';
7import PaymentApi from './PaymentApi'; 7import PaymentApi from './PaymentApi';
8import NewsApi from './NewsApi'; 8import NewsApi from './NewsApi';
9import FeaturesApi from './FeaturesApi';
9 10
10export default (server, local) => ({ 11export default (server, local) => ({
11 app: new AppApi(server, local), 12 app: new AppApi(server, local),
12 services: new ServicesApi(server, local), 13 services: new ServicesApi(server, local),
13 recipePreviews: new RecipePreviewsApi(server, local), 14 recipePreviews: new RecipePreviewsApi(server, local),
14 recipes: new RecipesApi(server, local), 15 recipes: new RecipesApi(server, local),
16 features: new FeaturesApi(server, local),
15 user: new UserApi(server, local), 17 user: new UserApi(server, local),
16 local: new LocalApi(server, local), 18 local: new LocalApi(server, local),
17 payment: new PaymentApi(server, local), 19 payment: new PaymentApi(server, local),
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index 8f3297d13..0951dfeda 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -259,6 +259,21 @@ export default class ServerApi {
259 return data; 259 return data;
260 } 260 }
261 261
262 // Features
263 async getDefaultFeatures() {
264 const request = await window.fetch(`${SERVER_URL}/${API_VERSION}/features/default`, this._prepareAuthRequest({
265 method: 'GET',
266 }));
267 if (!request.ok) {
268 throw request;
269 }
270 const data = await request.json();
271
272 const features = data;
273 console.debug('ServerApi::getDefaultFeatures resolves', features);
274 return features;
275 }
276
262 // Recipes 277 // Recipes
263 async getInstalledRecipes() { 278 async getInstalledRecipes() {
264 const recipesDirectory = getRecipeDirectory(); 279 const recipesDirectory = getRecipeDirectory();
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index 162422017..a5640e8d3 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -158,6 +158,9 @@ export default class AppStore extends Store {
158 this.locale = this._getDefaultLocale(); 158 this.locale = this._getDefaultLocale();
159 159
160 this._healthCheck(); 160 this._healthCheck();
161
162 const defaults = this.stores.features.defaults;
163 console.log(defaults)
161 } 164 }
162 165
163 @computed get cacheSize() { 166 @computed get cacheSize() {
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
new file mode 100644
index 000000000..5f738557f
--- /dev/null
+++ b/src/stores/FeaturesStore.js
@@ -0,0 +1,18 @@
1import { action, computed, observable } from 'mobx';
2
3import Store from './lib/Store';
4import CachedRequest from './lib/CachedRequest';
5import Request from './lib/Request';
6
7export default class RecipesStore extends Store {
8 @observable defaultFeaturesRequest = new CachedRequest(this.api.features, 'defaults');
9
10 setup() {
11 return this.defaults;
12 }
13
14 @computed get defaults() {
15 console.log('GETTING DEFAULTS')
16 return this.defaultFeaturesRequest.execute().result || [];
17 }
18}
diff --git a/src/stores/index.js b/src/stores/index.js
index 2d99e3952..96b844c95 100644
--- a/src/stores/index.js
+++ b/src/stores/index.js
@@ -1,5 +1,6 @@
1import AppStore from './AppStore'; 1import AppStore from './AppStore';
2import UserStore from './UserStore'; 2import UserStore from './UserStore';
3import FeaturesStore from './FeaturesStore';
3import SettingsStore from './SettingsStore'; 4import SettingsStore from './SettingsStore';
4import ServicesStore from './ServicesStore'; 5import ServicesStore from './ServicesStore';
5import RecipesStore from './RecipesStore'; 6import RecipesStore from './RecipesStore';
@@ -16,6 +17,7 @@ export default (api, actions, router) => {
16 router, 17 router,
17 app: new AppStore(stores, api, actions), 18 app: new AppStore(stores, api, actions),
18 user: new UserStore(stores, api, actions), 19 user: new UserStore(stores, api, actions),
20 features: new FeaturesStore(stores, api, actions),
19 settings: new SettingsStore(stores, api, actions), 21 settings: new SettingsStore(stores, api, actions),
20 services: new ServicesStore(stores, api, actions), 22 services: new ServicesStore(stores, api, actions),
21 recipes: new RecipesStore(stores, api, actions), 23 recipes: new RecipesStore(stores, api, actions),