aboutsummaryrefslogtreecommitdiffstats
path: root/src/stores
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2018-02-16 15:03:36 +0100
committerLibravatar GitHub <noreply@github.com>2018-02-16 15:03:36 +0100
commitd6662400e5f72822ce462f6c17f081db4ea4ac5f (patch)
tree59067a6cd261724607bc46ad1ac56210b23d1d5f /src/stores
parentMerge branch 'fix/copy-paste' into develop (diff)
parentfix sideeffect of app not launching itself after first launch (diff)
downloadferdium-app-d6662400e5f72822ce462f6c17f081db4ea4ac5f.tar.gz
ferdium-app-d6662400e5f72822ce462f6c17f081db4ea4ac5f.tar.zst
ferdium-app-d6662400e5f72822ce462f6c17f081db4ea4ac5f.zip
fix(App): Fix issues with disabling launch app on startup
Refactor settingsStore to use mobx-localstorage
Diffstat (limited to 'src/stores')
-rw-r--r--src/stores/AppStore.js10
-rw-r--r--src/stores/ServicesStore.js1
-rw-r--r--src/stores/SettingsStore.js26
-rw-r--r--src/stores/UserStore.js3
4 files changed, 14 insertions, 26 deletions
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index dc5a04c46..9b59f01d2 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -331,10 +331,7 @@ export default class AppStore extends Store {
331 } 331 }
332 332
333 // Helpers 333 // Helpers
334 async _appStartsCounter() { 334 _appStartsCounter() {
335 // we need to wait until the settings request is resolved
336 await this.stores.settings.allSettingsRequest;
337
338 this.actions.settings.update({ 335 this.actions.settings.update({
339 settings: { 336 settings: {
340 appStarts: (this.stores.settings.all.appStarts || 0) + 1, 337 appStarts: (this.stores.settings.all.appStarts || 0) + 1,
@@ -345,10 +342,7 @@ export default class AppStore extends Store {
345 async _autoStart() { 342 async _autoStart() {
346 this.autoLaunchOnStart = await this._checkAutoStart(); 343 this.autoLaunchOnStart = await this._checkAutoStart();
347 344
348 // we need to wait until the settings request is resolved 345 if (this.stores.settings.all.appStarts === 1) {
349 await this.stores.settings.allSettingsRequest;
350
351 if (!this.stores.settings.all.appStarts) {
352 this.actions.app.launchOnStartup({ 346 this.actions.app.launchOnStartup({
353 enable: true, 347 enable: true,
354 }); 348 });
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 99ffe5439..c38d0d9ee 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -536,7 +536,6 @@ export default class ServicesStore extends Store {
536 536
537 // We can't just block this earlier, otherwise the mobx reaction won't be aware of the vars to watch in some cases 537 // We can't just block this earlier, otherwise the mobx reaction won't be aware of the vars to watch in some cases
538 if (showMessageBadgesEvenWhenMuted) { 538 if (showMessageBadgesEvenWhenMuted) {
539 console.log('set badge', unreadDirectMessageCount, unreadIndirectMessageCount);
540 this.actions.app.setBadge({ 539 this.actions.app.setBadge({
541 unreadDirectMessageCount, 540 unreadDirectMessageCount,
542 unreadIndirectMessageCount, 541 unreadIndirectMessageCount,
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index da99a720f..b7d803398 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -1,17 +1,12 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import { action, computed, observable, extendObservable } from 'mobx'; 2import { action, computed } from 'mobx';
3import localStorage from 'mobx-localstorage';
3 4
4import Store from './lib/Store'; 5import Store from './lib/Store';
5import Request from './lib/Request';
6import CachedRequest from './lib/CachedRequest';
7import { gaEvent } from '../lib/analytics'; 6import { gaEvent } from '../lib/analytics';
8import SettingsModel from '../models/Settings'; 7import SettingsModel from '../models/Settings';
9 8
10export default class SettingsStore extends Store { 9export default class SettingsStore extends Store {
11 @observable allSettingsRequest = new CachedRequest(this.api.local, 'getSettings');
12 @observable updateSettingsRequest = new Request(this.api.local, 'updateSettings');
13 @observable removeSettingsKeyRequest = new Request(this.api.local, 'removeKey');
14
15 constructor(...args) { 10 constructor(...args) {
16 super(...args); 11 super(...args);
17 12
@@ -21,20 +16,16 @@ export default class SettingsStore extends Store {
21 } 16 }
22 17
23 setup() { 18 setup() {
24 this.allSettingsRequest.execute();
25 this._shareSettingsWithMainProcess(); 19 this._shareSettingsWithMainProcess();
26 } 20 }
27 21
28 @computed get all() { 22 @computed get all() {
29 return new SettingsModel(this.allSettingsRequest.result); 23 return new SettingsModel(localStorage.getItem('app') || {});
30 } 24 }
31 25
32 @action async _update({ settings }) { 26 @action async _update({ settings }) {
33 await this.updateSettingsRequest.execute(settings)._promise; 27 const appSettings = this.all;
34 await this.allSettingsRequest.patch((result) => { 28 localStorage.setItem('app', Object.assign(appSettings, settings));
35 if (!result) return;
36 extendObservable(result, settings);
37 });
38 29
39 // We need a little hack to wait until everything is patched 30 // We need a little hack to wait until everything is patched
40 setTimeout(() => this._shareSettingsWithMainProcess(), 0); 31 setTimeout(() => this._shareSettingsWithMainProcess(), 0);
@@ -43,8 +34,11 @@ export default class SettingsStore extends Store {
43 } 34 }
44 35
45 @action async _remove({ key }) { 36 @action async _remove({ key }) {
46 await this.removeSettingsKeyRequest.execute(key); 37 const appSettings = this.all;
47 await this.allSettingsRequest.invalidate({ immediately: true }); 38 if (Object.hasOwnProperty.call(appSettings, key)) {
39 delete appSettings[key];
40 localStorage.setItem('app', appSettings);
41 }
48 42
49 this._shareSettingsWithMainProcess(); 43 this._shareSettingsWithMainProcess();
50 } 44 }
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index abec4df5d..7dbbd955b 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -1,6 +1,7 @@
1import { observable, computed, action } from 'mobx'; 1import { observable, computed, action } from 'mobx';
2import moment from 'moment'; 2import moment from 'moment';
3import jwt from 'jsonwebtoken'; 3import jwt from 'jsonwebtoken';
4import localStorage from 'mobx-localstorage';
4 5
5import { isDevMode } from '../environment'; 6import { isDevMode } from '../environment';
6import Store from './lib/Store'; 7import Store from './lib/Store';
@@ -99,7 +100,7 @@ export default class UserStore extends Store {
99 100
100 // Data 101 // Data
101 @computed get isLoggedIn() { 102 @computed get isLoggedIn() {
102 return this.authToken !== null && this.authToken !== undefined; 103 return Boolean(localStorage.getItem('authToken'));
103 } 104 }
104 105
105 // @computed get isTokenValid() { 106 // @computed get isTokenValid() {