aboutsummaryrefslogtreecommitdiffstats
path: root/src/stores
diff options
context:
space:
mode:
Diffstat (limited to 'src/stores')
-rw-r--r--src/stores/AppStore.js16
-rw-r--r--src/stores/DictionaryStore.js45
-rw-r--r--src/stores/FeaturesStore.js1
-rw-r--r--src/stores/GlobalErrorStore.js1
-rw-r--r--src/stores/NewsStore.js1
-rw-r--r--src/stores/PaymentStore.js3
-rw-r--r--src/stores/RecipePreviewsStore.js2
-rw-r--r--src/stores/RecipesStore.js2
-rw-r--r--src/stores/RequestStore.js3
-rw-r--r--src/stores/ServicesStore.js23
-rw-r--r--src/stores/SettingsStore.js25
-rw-r--r--src/stores/UserStore.js26
-rw-r--r--src/stores/index.js2
-rw-r--r--src/stores/lib/CachedRequest.js1
-rw-r--r--src/stores/lib/Reaction.js2
-rw-r--r--src/stores/lib/Request.js8
-rw-r--r--src/stores/lib/Store.js4
17 files changed, 107 insertions, 58 deletions
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index 6f156a96d..dd4642d70 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -38,12 +38,15 @@ export default class AppStore extends Store {
38 }; 38 };
39 39
40 @observable healthCheckRequest = new Request(this.api.app, 'health'); 40 @observable healthCheckRequest = new Request(this.api.app, 'health');
41
41 @observable getAppCacheSizeRequest = new Request(this.api.local, 'getAppCacheSize'); 42 @observable getAppCacheSizeRequest = new Request(this.api.local, 'getAppCacheSize');
43
42 @observable clearAppCacheRequest = new Request(this.api.local, 'clearAppCache'); 44 @observable clearAppCacheRequest = new Request(this.api.local, 'clearAppCache');
43 45
44 @observable autoLaunchOnStart = true; 46 @observable autoLaunchOnStart = true;
45 47
46 @observable isOnline = navigator.onLine; 48 @observable isOnline = navigator.onLine;
49
47 @observable timeOfflineStart; 50 @observable timeOfflineStart;
48 51
49 @observable updateStatus = null; 52 @observable updateStatus = null;
@@ -150,19 +153,22 @@ export default class AppStore extends Store {
150 key( 153 key(
151 '⌘+pagedown, ctrl+pagedown, ⌘+alt+right, ctrl+tab', () => { 154 '⌘+pagedown, ctrl+pagedown, ⌘+alt+right, ctrl+tab', () => {
152 this.actions.service.setActiveNext(); 155 this.actions.service.setActiveNext();
153 }); 156 },
157 );
154 158
155 // Set active the prev service 159 // Set active the prev service
156 key( 160 key(
157 '⌘+pageup, ctrl+pageup, ⌘+alt+left, ctrl+shift+tab', () => { 161 '⌘+pageup, ctrl+pageup, ⌘+alt+left, ctrl+shift+tab', () => {
158 this.actions.service.setActivePrev(); 162 this.actions.service.setActivePrev();
159 }); 163 },
164 );
160 165
161 // Global Mute 166 // Global Mute
162 key( 167 key(
163 '⌘+shift+m ctrl+shift+m', () => { 168 '⌘+shift+m ctrl+shift+m', () => {
164 this.actions.app.toggleMuteApp(); 169 this.actions.app.toggleMuteApp();
165 }); 170 },
171 );
166 172
167 this.locale = this._getDefaultLocale(); 173 this.locale = this._getDefaultLocale();
168 174
@@ -182,7 +188,9 @@ export default class AppStore extends Store {
182 } 188 }
183 189
184 // Actions 190 // Actions
185 @action _notify({ title, options, notificationId, serviceId = null }) { 191 @action _notify({
192 title, options, notificationId, serviceId = null,
193 }) {
186 if (this.stores.settings.all.app.isAppMuted) return; 194 if (this.stores.settings.all.app.isAppMuted) return;
187 195
188 const notification = new window.Notification(title, options); 196 const notification = new window.Notification(title, options);
diff --git a/src/stores/DictionaryStore.js b/src/stores/DictionaryStore.js
deleted file mode 100644
index b9c5f2abf..000000000
--- a/src/stores/DictionaryStore.js
+++ /dev/null
@@ -1,45 +0,0 @@
1import { observable } from 'mobx';
2import { createDownloader } from 'hunspell-dict-downloader';
3
4import Store from './lib/Store';
5
6import { DICTIONARY_PATH } from '../config';
7
8const debug = require('debug')('Franz:DictionaryStore');
9
10export default class DictionaryStore extends Store {
11 @observable available = []
12 @observable installed = []
13
14 _dictDownloader = null
15
16 constructor(...args) {
17 super(...args);
18
19 this.registerReactions([
20 this._downloadDictForUserLocale.bind(this),
21 ]);
22 }
23
24 async setup() {
25 this._dictDownloader = await createDownloader(DICTIONARY_PATH);
26 debug('dicts', this._dictDownloader);
27
28 this.available = this._dictDownloader.availableDictionaries;
29 this.installed = this._dictDownloader.installedDictionaries;
30
31 if (!this.installed.includes('en-us')) {
32 this._dictDownloader.installDictionary('en-us');
33 }
34 }
35
36 _downloadDictForUserLocale() {
37 const spellcheckerLanguage = this.stores.settings.app.spellcheckerLanguage;
38
39 debug('trying to Downloading dict for', spellcheckerLanguage);
40 if (!this.installed.includes(spellcheckerLanguage) && this.available.includes(spellcheckerLanguage) && spellcheckerLanguage !== 'en-us') {
41 debug('Downloading dict for', spellcheckerLanguage);
42 this._dictDownloader.installDictionary(spellcheckerLanguage);
43 }
44 }
45}
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
index 10c893d3f..2a0713b6f 100644
--- a/src/stores/FeaturesStore.js
+++ b/src/stores/FeaturesStore.js
@@ -11,6 +11,7 @@ import { DEFAULT_FEATURES_CONFIG } from '../config';
11 11
12export default class FeaturesStore extends Store { 12export default class FeaturesStore extends Store {
13 @observable defaultFeaturesRequest = new CachedRequest(this.api.features, 'default'); 13 @observable defaultFeaturesRequest = new CachedRequest(this.api.features, 'default');
14
14 @observable featuresRequest = new CachedRequest(this.api.features, 'features'); 15 @observable featuresRequest = new CachedRequest(this.api.features, 'features');
15 16
16 async setup() { 17 async setup() {
diff --git a/src/stores/GlobalErrorStore.js b/src/stores/GlobalErrorStore.js
index f4b9d7838..90bf751c3 100644
--- a/src/stores/GlobalErrorStore.js
+++ b/src/stores/GlobalErrorStore.js
@@ -4,6 +4,7 @@ import Request from './lib/Request';
4 4
5export default class GlobalErrorStore extends Store { 5export default class GlobalErrorStore extends Store {
6 @observable error = null; 6 @observable error = null;
7
7 @observable response = {}; 8 @observable response = {};
8 9
9 constructor(...args) { 10 constructor(...args) {
diff --git a/src/stores/NewsStore.js b/src/stores/NewsStore.js
index e5091834f..6984425df 100644
--- a/src/stores/NewsStore.js
+++ b/src/stores/NewsStore.js
@@ -8,6 +8,7 @@ import { CHECK_INTERVAL } from '../config';
8 8
9export default class NewsStore extends Store { 9export default class NewsStore extends Store {
10 @observable latestNewsRequest = new CachedRequest(this.api.news, 'latest'); 10 @observable latestNewsRequest = new CachedRequest(this.api.news, 'latest');
11
11 @observable hideNewsRequest = new Request(this.api.news, 'hide'); 12 @observable hideNewsRequest = new Request(this.api.news, 'hide');
12 13
13 constructor(...args) { 14 constructor(...args) {
diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js
index 9e348d14e..4cabee194 100644
--- a/src/stores/PaymentStore.js
+++ b/src/stores/PaymentStore.js
@@ -7,8 +7,11 @@ import { gaEvent } from '../lib/analytics';
7 7
8export default class PaymentStore extends Store { 8export default class PaymentStore extends Store {
9 @observable plansRequest = new CachedRequest(this.api.payment, 'plans'); 9 @observable plansRequest = new CachedRequest(this.api.payment, 'plans');
10
10 @observable createHostedPageRequest = new Request(this.api.payment, 'getHostedPage'); 11 @observable createHostedPageRequest = new Request(this.api.payment, 'getHostedPage');
12
11 @observable createDashboardUrlRequest = new Request(this.api.payment, 'getDashboardUrl'); 13 @observable createDashboardUrlRequest = new Request(this.api.payment, 'getDashboardUrl');
14
12 @observable ordersDataRequest = new CachedRequest(this.api.payment, 'getOrders'); 15 @observable ordersDataRequest = new CachedRequest(this.api.payment, 'getOrders');
13 16
14 constructor(...args) { 17 constructor(...args) {
diff --git a/src/stores/RecipePreviewsStore.js b/src/stores/RecipePreviewsStore.js
index e25936f15..10b2928e3 100644
--- a/src/stores/RecipePreviewsStore.js
+++ b/src/stores/RecipePreviewsStore.js
@@ -8,7 +8,9 @@ import { gaEvent } from '../lib/analytics';
8 8
9export default class RecipePreviewsStore extends Store { 9export default class RecipePreviewsStore extends Store {
10 @observable allRecipePreviewsRequest = new CachedRequest(this.api.recipePreviews, 'all'); 10 @observable allRecipePreviewsRequest = new CachedRequest(this.api.recipePreviews, 'all');
11
11 @observable featuredRecipePreviewsRequest = new CachedRequest(this.api.recipePreviews, 'featured'); 12 @observable featuredRecipePreviewsRequest = new CachedRequest(this.api.recipePreviews, 'featured');
13
12 @observable searchRecipePreviewsRequest = new Request(this.api.recipePreviews, 'search'); 14 @observable searchRecipePreviewsRequest = new Request(this.api.recipePreviews, 'search');
13 15
14 constructor(...args) { 16 constructor(...args) {
diff --git a/src/stores/RecipesStore.js b/src/stores/RecipesStore.js
index f2480bc8e..ab64bf79c 100644
--- a/src/stores/RecipesStore.js
+++ b/src/stores/RecipesStore.js
@@ -9,7 +9,9 @@ const debug = require('debug')('Franz:RecipeStore');
9 9
10export default class RecipesStore extends Store { 10export default class RecipesStore extends Store {
11 @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all'); 11 @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all');
12
12 @observable installRecipeRequest = new Request(this.api.recipes, 'install'); 13 @observable installRecipeRequest = new Request(this.api.recipes, 'install');
14
13 @observable getRecipeUpdatesRequest = new Request(this.api.recipes, 'update'); 15 @observable getRecipeUpdatesRequest = new Request(this.api.recipes, 'update');
14 16
15 constructor(...args) { 17 constructor(...args) {
diff --git a/src/stores/RequestStore.js b/src/stores/RequestStore.js
index bbfe6f6df..2629e0a38 100644
--- a/src/stores/RequestStore.js
+++ b/src/stores/RequestStore.js
@@ -6,10 +6,13 @@ const debug = require('debug')('Franz:RequestsStore');
6 6
7export default class RequestStore extends Store { 7export default class RequestStore extends Store {
8 @observable userInfoRequest; 8 @observable userInfoRequest;
9
9 @observable servicesRequest; 10 @observable servicesRequest;
11
10 @observable showRequiredRequestsError = false; 12 @observable showRequiredRequestsError = false;
11 13
12 retries = 0; 14 retries = 0;
15
13 retryDelay = 2000; 16 retryDelay = 2000;
14 17
15 constructor(...args) { 18 constructor(...args) {
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 99b091589..5b70ca271 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -1,4 +1,6 @@
1import { action, reaction, computed, observable } from 'mobx'; 1import {
2 action, reaction, computed, observable,
3} from 'mobx';
2import { debounce, remove } from 'lodash'; 4import { debounce, remove } from 'lodash';
3 5
4import Store from './lib/Store'; 6import Store from './lib/Store';
@@ -11,10 +13,15 @@ const debug = require('debug')('Franz:ServiceStore');
11 13
12export default class ServicesStore extends Store { 14export default class ServicesStore extends Store {
13 @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); 15 @observable allServicesRequest = new CachedRequest(this.api.services, 'all');
16
14 @observable createServiceRequest = new Request(this.api.services, 'create'); 17 @observable createServiceRequest = new Request(this.api.services, 'create');
18
15 @observable updateServiceRequest = new Request(this.api.services, 'update'); 19 @observable updateServiceRequest = new Request(this.api.services, 'update');
20
16 @observable reorderServicesRequest = new Request(this.api.services, 'reorder'); 21 @observable reorderServicesRequest = new Request(this.api.services, 'reorder');
22
17 @observable deleteServiceRequest = new Request(this.api.services, 'delete'); 23 @observable deleteServiceRequest = new Request(this.api.services, 'delete');
24
18 @observable clearCacheRequest = new Request(this.api.services, 'clearCache'); 25 @observable clearCacheRequest = new Request(this.api.services, 'clearCache');
19 26
20 @observable filterNeedle = null; 27 @observable filterNeedle = null;
@@ -400,6 +407,18 @@ export default class ServicesStore extends Store {
400 const url = args[0]; 407 const url = args[0];
401 408
402 this.actions.app.openExternalUrl({ url }); 409 this.actions.app.openExternalUrl({ url });
410 } else if (channel === 'set-service-spellchecker-language') {
411 if (!args) {
412 console.warn('Did not receive locale');
413 } else {
414 this.actions.service.updateService({
415 serviceId,
416 serviceData: {
417 spellcheckerLanguage: args[0] === 'reset' ? '' : args[0],
418 },
419 redirect: false,
420 });
421 }
403 } 422 }
404 } 423 }
405 424
@@ -625,7 +644,7 @@ export default class ServicesStore extends Store {
625 const service = this.one(serviceId); 644 const service = this.one(serviceId);
626 645
627 if (service.webview) { 646 if (service.webview) {
628 service.webview.send('initializeRecipe', service); 647 service.webview.send('initialize-recipe', service);
629 } 648 }
630 } 649 }
631 650
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index 4c01e9910..a456195bf 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -1,5 +1,7 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import { action, computed, observable } from 'mobx'; 2import {
3 action, computed, observable, set,
4} from 'mobx';
3import localStorage from 'mobx-localstorage'; 5import localStorage from 'mobx-localstorage';
4 6
5import Store from './lib/Store'; 7import Store from './lib/Store';
@@ -14,11 +16,13 @@ const debug = require('debug')('Franz:SettingsStore');
14 16
15export default class SettingsStore extends Store { 17export default class SettingsStore extends Store {
16 @observable appSettingsRequest = new CachedRequest(this.api.local, 'getAppSettings'); 18 @observable appSettingsRequest = new CachedRequest(this.api.local, 'getAppSettings');
19
17 @observable updateAppSettingsRequest = new Request(this.api.local, 'updateAppSettings'); 20 @observable updateAppSettingsRequest = new Request(this.api.local, 'updateAppSettings');
18 21
19 @observable fileSystemSettingsRequests = []; 22 fileSystemSettingsRequests = [];
20 23
21 fileSystemSettingsTypes = FILE_SYSTEM_SETTINGS_TYPES; 24 fileSystemSettingsTypes = FILE_SYSTEM_SETTINGS_TYPES;
25
22 @observable _fileSystemSettingsCache = { 26 @observable _fileSystemSettingsCache = {
23 app: DEFAULT_APP_SETTINGS, 27 app: DEFAULT_APP_SETTINGS,
24 proxy: {}, 28 proxy: {},
@@ -57,6 +61,21 @@ export default class SettingsStore extends Store {
57 } 61 }
58 62
59 @computed get proxy() { 63 @computed get proxy() {
64 // // We need to provide the final data structure as mobx autoruns won't work
65 // const proxySettings = observable({});
66 // this.stores.services.all.forEach((service) => {
67 // proxySettings[service.id] = {
68 // isEnabled: false,
69 // host: null,
70 // user: null,
71 // password: null,
72 // };
73 // });
74
75 // debug('this._fileSystemSettingsCache.proxy', this._fileSystemSettingsCache.proxy, proxySettings);
76
77 // return Object.assign(proxySettings, this._fileSystemSettingsCache.proxy);
78
60 return this._fileSystemSettingsCache.proxy || {}; 79 return this._fileSystemSettingsCache.proxy || {};
61 } 80 }
62 81
@@ -98,7 +117,7 @@ export default class SettingsStore extends Store {
98 data, 117 data,
99 }); 118 });
100 119
101 Object.assign(this._fileSystemSettingsCache[type], data); 120 set(this._fileSystemSettingsCache[type], data);
102 } 121 }
103 } 122 }
104 123
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index 26ac2c60e..7addb5760 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -14,29 +14,47 @@ const debug = require('debug')('Franz:UserStore');
14// TODO: split stores into UserStore and AuthStore 14// TODO: split stores into UserStore and AuthStore
15export default class UserStore extends Store { 15export default class UserStore extends Store {
16 BASE_ROUTE = '/auth'; 16 BASE_ROUTE = '/auth';
17
17 WELCOME_ROUTE = `${this.BASE_ROUTE}/welcome`; 18 WELCOME_ROUTE = `${this.BASE_ROUTE}/welcome`;
19
18 LOGIN_ROUTE = `${this.BASE_ROUTE}/login`; 20 LOGIN_ROUTE = `${this.BASE_ROUTE}/login`;
21
19 LOGOUT_ROUTE = `${this.BASE_ROUTE}/logout`; 22 LOGOUT_ROUTE = `${this.BASE_ROUTE}/logout`;
23
20 SIGNUP_ROUTE = `${this.BASE_ROUTE}/signup`; 24 SIGNUP_ROUTE = `${this.BASE_ROUTE}/signup`;
25
21 PRICING_ROUTE = `${this.BASE_ROUTE}/signup/pricing`; 26 PRICING_ROUTE = `${this.BASE_ROUTE}/signup/pricing`;
27
22 IMPORT_ROUTE = `${this.BASE_ROUTE}/signup/import`; 28 IMPORT_ROUTE = `${this.BASE_ROUTE}/signup/import`;
29
23 INVITE_ROUTE = `${this.BASE_ROUTE}/signup/invite`; 30 INVITE_ROUTE = `${this.BASE_ROUTE}/signup/invite`;
31
24 PASSWORD_ROUTE = `${this.BASE_ROUTE}/password`; 32 PASSWORD_ROUTE = `${this.BASE_ROUTE}/password`;
25 33
26 @observable loginRequest = new Request(this.api.user, 'login'); 34 @observable loginRequest = new Request(this.api.user, 'login');
35
27 @observable signupRequest = new Request(this.api.user, 'signup'); 36 @observable signupRequest = new Request(this.api.user, 'signup');
37
28 @observable passwordRequest = new Request(this.api.user, 'password'); 38 @observable passwordRequest = new Request(this.api.user, 'password');
39
29 @observable inviteRequest = new Request(this.api.user, 'invite'); 40 @observable inviteRequest = new Request(this.api.user, 'invite');
41
30 @observable getUserInfoRequest = new CachedRequest(this.api.user, 'getInfo'); 42 @observable getUserInfoRequest = new CachedRequest(this.api.user, 'getInfo');
43
31 @observable updateUserInfoRequest = new Request(this.api.user, 'updateInfo'); 44 @observable updateUserInfoRequest = new Request(this.api.user, 'updateInfo');
45
32 @observable getLegacyServicesRequest = new CachedRequest(this.api.user, 'getLegacyServices'); 46 @observable getLegacyServicesRequest = new CachedRequest(this.api.user, 'getLegacyServices');
47
33 @observable deleteAccountRequest = new CachedRequest(this.api.user, 'delete'); 48 @observable deleteAccountRequest = new CachedRequest(this.api.user, 'delete');
34 49
35 @observable isImportLegacyServicesExecuting = false; 50 @observable isImportLegacyServicesExecuting = false;
51
36 @observable isImportLegacyServicesCompleted = false; 52 @observable isImportLegacyServicesCompleted = false;
37 53
38 @observable id; 54 @observable id;
55
39 @observable authToken = localStorage.getItem('authToken') || null; 56 @observable authToken = localStorage.getItem('authToken') || null;
57
40 @observable accountType; 58 @observable accountType;
41 59
42 @observable hasCompletedSignup = null; 60 @observable hasCompletedSignup = null;
@@ -48,6 +66,7 @@ export default class UserStore extends Store {
48 logoutReasonTypes = { 66 logoutReasonTypes = {
49 SERVER: 'SERVER', 67 SERVER: 'SERVER',
50 }; 68 };
69
51 @observable logoutReason = null; 70 @observable logoutReason = null;
52 71
53 constructor(...args) { 72 constructor(...args) {
@@ -141,7 +160,9 @@ export default class UserStore extends Store {
141 gaEvent('User', 'login'); 160 gaEvent('User', 'login');
142 } 161 }
143 162
144 @action async _signup({ firstname, lastname, email, password, accountType, company }) { 163 @action async _signup({
164 firstname, lastname, email, password, accountType, company,
165 }) {
145 const authToken = await this.signupRequest.execute({ 166 const authToken = await this.signupRequest.execute({
146 firstname, 167 firstname,
147 lastname, 168 lastname,
@@ -198,10 +219,11 @@ export default class UserStore extends Store {
198 } 219 }
199 220
200 @action _logout() { 221 @action _logout() {
222 // workaround mobx issue
201 localStorage.removeItem('authToken'); 223 localStorage.removeItem('authToken');
224 window.localStorage.removeItem('authToken');
202 this.getUserInfoRequest.invalidate().reset(); 225 this.getUserInfoRequest.invalidate().reset();
203 this.authToken = null; 226 this.authToken = null;
204 // this.data = {};
205 } 227 }
206 228
207 @action async _importLegacyServices({ services }) { 229 @action async _importLegacyServices({ services }) {
diff --git a/src/stores/index.js b/src/stores/index.js
index f547d0a7a..96b844c95 100644
--- a/src/stores/index.js
+++ b/src/stores/index.js
@@ -9,7 +9,6 @@ import UIStore from './UIStore';
9import PaymentStore from './PaymentStore'; 9import PaymentStore from './PaymentStore';
10import NewsStore from './NewsStore'; 10import NewsStore from './NewsStore';
11import RequestStore from './RequestStore'; 11import RequestStore from './RequestStore';
12import DictionaryStore from './DictionaryStore';
13import GlobalErrorStore from './GlobalErrorStore'; 12import GlobalErrorStore from './GlobalErrorStore';
14 13
15export default (api, actions, router) => { 14export default (api, actions, router) => {
@@ -27,7 +26,6 @@ export default (api, actions, router) => {
27 payment: new PaymentStore(stores, api, actions), 26 payment: new PaymentStore(stores, api, actions),
28 news: new NewsStore(stores, api, actions), 27 news: new NewsStore(stores, api, actions),
29 requests: new RequestStore(stores, api, actions), 28 requests: new RequestStore(stores, api, actions),
30 dictionary: new DictionaryStore(stores, api, actions),
31 globalError: new GlobalErrorStore(stores, api, actions), 29 globalError: new GlobalErrorStore(stores, api, actions),
32 }); 30 });
33 // Initialize all stores 31 // Initialize all stores
diff --git a/src/stores/lib/CachedRequest.js b/src/stores/lib/CachedRequest.js
index c0c3d40a1..ac8b2bd81 100644
--- a/src/stores/lib/CachedRequest.js
+++ b/src/stores/lib/CachedRequest.js
@@ -5,6 +5,7 @@ import Request from './Request';
5 5
6export default class CachedRequest extends Request { 6export default class CachedRequest extends Request {
7 _apiCalls = []; 7 _apiCalls = [];
8
8 _isInvalidated = true; 9 _isInvalidated = true;
9 10
10 execute(...callArgs) { 11 execute(...callArgs) {
diff --git a/src/stores/lib/Reaction.js b/src/stores/lib/Reaction.js
index e9bc26d81..46aa4dae6 100644
--- a/src/stores/lib/Reaction.js
+++ b/src/stores/lib/Reaction.js
@@ -3,7 +3,9 @@ import { autorun } from 'mobx';
3 3
4export default class Reaction { 4export default class Reaction {
5 reaction; 5 reaction;
6
6 hasBeenStarted; 7 hasBeenStarted;
8
7 dispose; 9 dispose;
8 10
9 constructor(reaction) { 11 constructor(reaction) {
diff --git a/src/stores/lib/Request.js b/src/stores/lib/Request.js
index 4a6925cc5..04f528156 100644
--- a/src/stores/lib/Request.js
+++ b/src/stores/lib/Request.js
@@ -9,15 +9,23 @@ export default class Request {
9 } 9 }
10 10
11 @observable result = null; 11 @observable result = null;
12
12 @observable error = null; 13 @observable error = null;
14
13 @observable isExecuting = false; 15 @observable isExecuting = false;
16
14 @observable isError = false; 17 @observable isError = false;
18
15 @observable wasExecuted = false; 19 @observable wasExecuted = false;
16 20
17 _promise = Promise; 21 _promise = Promise;
22
18 _api = {}; 23 _api = {};
24
19 _method = ''; 25 _method = '';
26
20 _isWaitingForResponse = false; 27 _isWaitingForResponse = false;
28
21 _currentApiCall = null; 29 _currentApiCall = null;
22 30
23 constructor(api, method) { 31 constructor(api, method) {
diff --git a/src/stores/lib/Store.js b/src/stores/lib/Store.js
index 873da7b37..8d2fb4066 100644
--- a/src/stores/lib/Store.js
+++ b/src/stores/lib/Store.js
@@ -3,16 +3,20 @@ import Reaction from './Reaction';
3 3
4export default class Store { 4export default class Store {
5 stores = {}; 5 stores = {};
6
6 api = {}; 7 api = {};
8
7 actions = {}; 9 actions = {};
8 10
9 _reactions = []; 11 _reactions = [];
10 12
11 // status implementation 13 // status implementation
12 @observable _status = null; 14 @observable _status = null;
15
13 @computed get actionStatus() { 16 @computed get actionStatus() {
14 return this._status || []; 17 return this._status || [];
15 } 18 }
19
16 set actionStatus(status) { 20 set actionStatus(status) {
17 this._status = status; 21 this._status = status;
18 } 22 }