diff options
author | Stefan Malzner <stefan@adlk.io> | 2018-02-16 15:03:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-16 15:03:36 +0100 |
commit | d6662400e5f72822ce462f6c17f081db4ea4ac5f (patch) | |
tree | 59067a6cd261724607bc46ad1ac56210b23d1d5f /src/stores | |
parent | Merge branch 'fix/copy-paste' into develop (diff) | |
parent | fix sideeffect of app not launching itself after first launch (diff) | |
download | ferdium-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.js | 10 | ||||
-rw-r--r-- | src/stores/ServicesStore.js | 1 | ||||
-rw-r--r-- | src/stores/SettingsStore.js | 26 | ||||
-rw-r--r-- | src/stores/UserStore.js | 3 |
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 @@ | |||
1 | import { ipcRenderer } from 'electron'; | 1 | import { ipcRenderer } from 'electron'; |
2 | import { action, computed, observable, extendObservable } from 'mobx'; | 2 | import { action, computed } from 'mobx'; |
3 | import localStorage from 'mobx-localstorage'; | ||
3 | 4 | ||
4 | import Store from './lib/Store'; | 5 | import Store from './lib/Store'; |
5 | import Request from './lib/Request'; | ||
6 | import CachedRequest from './lib/CachedRequest'; | ||
7 | import { gaEvent } from '../lib/analytics'; | 6 | import { gaEvent } from '../lib/analytics'; |
8 | import SettingsModel from '../models/Settings'; | 7 | import SettingsModel from '../models/Settings'; |
9 | 8 | ||
10 | export default class SettingsStore extends Store { | 9 | export 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 @@ | |||
1 | import { observable, computed, action } from 'mobx'; | 1 | import { observable, computed, action } from 'mobx'; |
2 | import moment from 'moment'; | 2 | import moment from 'moment'; |
3 | import jwt from 'jsonwebtoken'; | 3 | import jwt from 'jsonwebtoken'; |
4 | import localStorage from 'mobx-localstorage'; | ||
4 | 5 | ||
5 | import { isDevMode } from '../environment'; | 6 | import { isDevMode } from '../environment'; |
6 | import Store from './lib/Store'; | 7 | import 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() { |