diff options
author | Stefan Malzner <stefan@adlk.io> | 2018-11-24 20:36:09 +0100 |
---|---|---|
committer | Stefan Malzner <stefan@adlk.io> | 2018-11-24 20:36:09 +0100 |
commit | 217cb8cdba811b93394811c6d616267cdf838eee (patch) | |
tree | 3683490e8288dbd179d4d60a09247287191e3b65 /src | |
parent | Delay app based on featureAPI settings (diff) | |
download | ferdium-app-217cb8cdba811b93394811c6d616267cdf838eee.tar.gz ferdium-app-217cb8cdba811b93394811c6d616267cdf838eee.tar.zst ferdium-app-217cb8cdba811b93394811c6d616267cdf838eee.zip |
Add missing delayApp commit
Diffstat (limited to 'src')
-rw-r--r-- | src/components/layout/AppLayout.js | 4 | ||||
-rw-r--r-- | src/containers/layout/AppLayoutContainer.js | 3 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 5 | ||||
-rw-r--r-- | src/stores/AppStore.js | 14 | ||||
-rw-r--r-- | src/stores/FeaturesStore.js | 16 |
5 files changed, 35 insertions, 7 deletions
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index a4003ef8e..4b20fc480 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js | |||
@@ -5,6 +5,7 @@ import { defineMessages, intlShape } from 'react-intl'; | |||
5 | import { TitleBar } from 'electron-react-titlebar'; | 5 | import { TitleBar } from 'electron-react-titlebar'; |
6 | 6 | ||
7 | import InfoBar from '../ui/InfoBar'; | 7 | import InfoBar from '../ui/InfoBar'; |
8 | import { component as DelayApp } from '../../features/delayApp'; | ||
8 | import globalMessages from '../../i18n/globalMessages'; | 9 | import globalMessages from '../../i18n/globalMessages'; |
9 | 10 | ||
10 | import { isWindows } from '../../environment'; | 11 | import { isWindows } from '../../environment'; |
@@ -58,6 +59,7 @@ export default @observer class AppLayout extends Component { | |||
58 | retryRequiredRequests: PropTypes.func.isRequired, | 59 | retryRequiredRequests: PropTypes.func.isRequired, |
59 | areRequiredRequestsLoading: PropTypes.bool.isRequired, | 60 | areRequiredRequestsLoading: PropTypes.bool.isRequired, |
60 | darkMode: PropTypes.bool.isRequired, | 61 | darkMode: PropTypes.bool.isRequired, |
62 | isDelayAppScreenVisible: PropTypes.bool.isRequired, | ||
61 | }; | 63 | }; |
62 | 64 | ||
63 | static defaultProps = { | 65 | static defaultProps = { |
@@ -86,6 +88,7 @@ export default @observer class AppLayout extends Component { | |||
86 | retryRequiredRequests, | 88 | retryRequiredRequests, |
87 | areRequiredRequestsLoading, | 89 | areRequiredRequestsLoading, |
88 | darkMode, | 90 | darkMode, |
91 | isDelayAppScreenVisible, | ||
89 | } = this.props; | 92 | } = this.props; |
90 | 93 | ||
91 | const { intl } = this.context; | 94 | const { intl } = this.context; |
@@ -152,6 +155,7 @@ export default @observer class AppLayout extends Component { | |||
152 | </a> | 155 | </a> |
153 | </InfoBar> | 156 | </InfoBar> |
154 | )} | 157 | )} |
158 | {isDelayAppScreenVisible && (<DelayApp />)} | ||
155 | {services} | 159 | {services} |
156 | </div> | 160 | </div> |
157 | </div> | 161 | </div> |
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index c5c9c6850..ce7f89c42 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js | |||
@@ -19,6 +19,8 @@ import Sidebar from '../../components/layout/Sidebar'; | |||
19 | import Services from '../../components/services/content/Services'; | 19 | import Services from '../../components/services/content/Services'; |
20 | import AppLoader from '../../components/ui/AppLoader'; | 20 | import AppLoader from '../../components/ui/AppLoader'; |
21 | 21 | ||
22 | import { state as delayAppState } from '../../features/delayApp'; | ||
23 | |||
22 | export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { | 24 | export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { |
23 | static defaultProps = { | 25 | static defaultProps = { |
24 | children: null, | 26 | children: null, |
@@ -128,6 +130,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e | |||
128 | retryRequiredRequests={retryRequiredRequests} | 130 | retryRequiredRequests={retryRequiredRequests} |
129 | areRequiredRequestsLoading={requests.areRequiredRequestsLoading} | 131 | areRequiredRequestsLoading={requests.areRequiredRequestsLoading} |
130 | darkMode={settings.all.app.darkMode} | 132 | darkMode={settings.all.app.darkMode} |
133 | isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible} | ||
131 | > | 134 | > |
132 | {React.Children.count(children) > 0 ? children : null} | 135 | {React.Children.count(children) > 0 ? children : null} |
133 | </AppLayout> | 136 | </AppLayout> |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 66ec5af84..24e29df18 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -249,5 +249,8 @@ | |||
249 | "validation.required": "{field} is required", | 249 | "validation.required": "{field} is required", |
250 | "validation.email": "{field} is not valid", | 250 | "validation.email": "{field} is not valid", |
251 | "validation.url": "{field} is not a valid URL", | 251 | "validation.url": "{field} is not a valid URL", |
252 | "validation.minLength": "{field} should be at least {length} characters long" | 252 | "validation.minLength": "{field} should be at least {length} characters long", |
253 | "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting", | ||
254 | "feature.delayApp.action": "Get a Franz Supporter License", | ||
255 | "feature.delayApp.text": "Franz will continue in {seconds} seconds." | ||
253 | } | 256 | } |
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 9ad4cd531..3e8b18801 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -12,6 +12,7 @@ import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config'; | |||
12 | import { isMac, isLinux, isWindows } from '../environment'; | 12 | import { isMac, isLinux, isWindows } from '../environment'; |
13 | import locales from '../i18n/translations'; | 13 | import locales from '../i18n/translations'; |
14 | import { gaEvent } from '../lib/analytics'; | 14 | import { gaEvent } from '../lib/analytics'; |
15 | import { onVisibilityChange } from '../helpers/visibility-helper'; | ||
15 | 16 | ||
16 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; | 17 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; |
17 | 18 | ||
@@ -56,6 +57,8 @@ export default class AppStore extends Store { | |||
56 | 57 | ||
57 | @observable isFullScreen = mainWindow.isFullScreen(); | 58 | @observable isFullScreen = mainWindow.isFullScreen(); |
58 | 59 | ||
60 | @observable isFocused = true; | ||
61 | |||
59 | constructor(...args) { | 62 | constructor(...args) { |
60 | super(...args); | 63 | super(...args); |
61 | 64 | ||
@@ -163,6 +166,17 @@ export default class AppStore extends Store { | |||
163 | this._healthCheck(); | 166 | this._healthCheck(); |
164 | 167 | ||
165 | this.isSystemDarkModeEnabled = systemPreferences.isDarkMode(); | 168 | this.isSystemDarkModeEnabled = systemPreferences.isDarkMode(); |
169 | |||
170 | onVisibilityChange((isVisible) => { | ||
171 | this.isFocused = isVisible; | ||
172 | // debug('Last focus', moment().diff(this.timeLastFocusStart)); | ||
173 | |||
174 | // if (isVisible) { | ||
175 | // this.timeLastFocusStart = moment(); | ||
176 | // } | ||
177 | |||
178 | debug('Window is visible/focused', isVisible); | ||
179 | }); | ||
166 | } | 180 | } |
167 | 181 | ||
168 | @computed get cacheSize() { | 182 | @computed get cacheSize() { |
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index f788c347d..9740d078f 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js | |||
@@ -3,15 +3,19 @@ import { computed, observable } from 'mobx'; | |||
3 | import Store from './lib/Store'; | 3 | import Store from './lib/Store'; |
4 | import CachedRequest from './lib/CachedRequest'; | 4 | import CachedRequest from './lib/CachedRequest'; |
5 | 5 | ||
6 | import delayApp from '../features/delayApp'; | ||
7 | |||
6 | export default class FeaturesStore extends Store { | 8 | export default class FeaturesStore extends Store { |
7 | @observable defaultFeaturesRequest = new CachedRequest(this.api.features, 'default'); | 9 | @observable defaultFeaturesRequest = new CachedRequest(this.api.features, 'default'); |
8 | @observable featuresRequest = new CachedRequest(this.api.features, 'features'); | 10 | @observable featuresRequest = new CachedRequest(this.api.features, 'features'); |
9 | 11 | ||
10 | setup() { | 12 | async setup() { |
11 | this.registerReactions([ | 13 | this.registerReactions([ |
12 | this._monitorLoginStatus.bind(this), | 14 | this._monitorLoginStatus.bind(this), |
13 | this._debugFeatures.bind(this), | ||
14 | ]); | 15 | ]); |
16 | |||
17 | await this.featuresRequest._promise; | ||
18 | setTimeout(this._enableFeatures.bind(this), 1); | ||
15 | } | 19 | } |
16 | 20 | ||
17 | @computed get features() { | 21 | @computed get features() { |
@@ -22,10 +26,6 @@ export default class FeaturesStore extends Store { | |||
22 | return this.defaultFeaturesRequest.execute().result || {}; | 26 | return this.defaultFeaturesRequest.execute().result || {}; |
23 | } | 27 | } |
24 | 28 | ||
25 | _debugFeatures() { | ||
26 | console.log(this.features); | ||
27 | } | ||
28 | |||
29 | _monitorLoginStatus() { | 29 | _monitorLoginStatus() { |
30 | if (this.stores.user.isLoggedIn) { | 30 | if (this.stores.user.isLoggedIn) { |
31 | this.featuresRequest.invalidate({ immediately: true }); | 31 | this.featuresRequest.invalidate({ immediately: true }); |
@@ -33,4 +33,8 @@ export default class FeaturesStore extends Store { | |||
33 | this.defaultFeaturesRequest.invalidate({ immediately: true }); | 33 | this.defaultFeaturesRequest.invalidate({ immediately: true }); |
34 | } | 34 | } |
35 | } | 35 | } |
36 | |||
37 | _enableFeatures() { | ||
38 | delayApp(this.stores, this.actions); | ||
39 | } | ||
36 | } | 40 | } |