aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2018-11-24 20:36:09 +0100
committerLibravatar Stefan Malzner <stefan@adlk.io>2018-11-24 20:36:09 +0100
commit217cb8cdba811b93394811c6d616267cdf838eee (patch)
tree3683490e8288dbd179d4d60a09247287191e3b65
parentDelay app based on featureAPI settings (diff)
downloadferdium-app-217cb8cdba811b93394811c6d616267cdf838eee.tar.gz
ferdium-app-217cb8cdba811b93394811c6d616267cdf838eee.tar.zst
ferdium-app-217cb8cdba811b93394811c6d616267cdf838eee.zip
Add missing delayApp commit
-rw-r--r--src/components/layout/AppLayout.js4
-rw-r--r--src/containers/layout/AppLayoutContainer.js3
-rw-r--r--src/i18n/locales/en-US.json5
-rw-r--r--src/stores/AppStore.js14
-rw-r--r--src/stores/FeaturesStore.js16
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';
5import { TitleBar } from 'electron-react-titlebar'; 5import { TitleBar } from 'electron-react-titlebar';
6 6
7import InfoBar from '../ui/InfoBar'; 7import InfoBar from '../ui/InfoBar';
8import { component as DelayApp } from '../../features/delayApp';
8import globalMessages from '../../i18n/globalMessages'; 9import globalMessages from '../../i18n/globalMessages';
9 10
10import { isWindows } from '../../environment'; 11import { 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';
19import Services from '../../components/services/content/Services'; 19import Services from '../../components/services/content/Services';
20import AppLoader from '../../components/ui/AppLoader'; 20import AppLoader from '../../components/ui/AppLoader';
21 21
22import { state as delayAppState } from '../../features/delayApp';
23
22export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { 24export 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';
12import { isMac, isLinux, isWindows } from '../environment'; 12import { isMac, isLinux, isWindows } from '../environment';
13import locales from '../i18n/translations'; 13import locales from '../i18n/translations';
14import { gaEvent } from '../lib/analytics'; 14import { gaEvent } from '../lib/analytics';
15import { onVisibilityChange } from '../helpers/visibility-helper';
15 16
16import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; 17import { 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';
3import Store from './lib/Store'; 3import Store from './lib/Store';
4import CachedRequest from './lib/CachedRequest'; 4import CachedRequest from './lib/CachedRequest';
5 5
6import delayApp from '../features/delayApp';
7
6export default class FeaturesStore extends Store { 8export 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}