aboutsummaryrefslogtreecommitdiffstats
path: root/src/containers/layout/AppLayoutContainer.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/containers/layout/AppLayoutContainer.js')
-rw-r--r--src/containers/layout/AppLayoutContainer.js57
1 files changed, 34 insertions, 23 deletions
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index 9212f809f..e1423bdaa 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -1,10 +1,12 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import { ThemeProvider } from 'react-jss';
4 5
5import AppStore from '../../stores/AppStore'; 6import AppStore from '../../stores/AppStore';
6import RecipesStore from '../../stores/RecipesStore'; 7import RecipesStore from '../../stores/RecipesStore';
7import ServicesStore from '../../stores/ServicesStore'; 8import ServicesStore from '../../stores/ServicesStore';
9import FeaturesStore from '../../stores/FeaturesStore';
8import UIStore from '../../stores/UIStore'; 10import UIStore from '../../stores/UIStore';
9import NewsStore from '../../stores/NewsStore'; 11import NewsStore from '../../stores/NewsStore';
10import SettingsStore from '../../stores/SettingsStore'; 12import SettingsStore from '../../stores/SettingsStore';
@@ -17,8 +19,9 @@ import Sidebar from '../../components/layout/Sidebar';
17import Services from '../../components/services/content/Services'; 19import Services from '../../components/services/content/Services';
18import AppLoader from '../../components/ui/AppLoader'; 20import AppLoader from '../../components/ui/AppLoader';
19 21
20@inject('stores', 'actions') @observer 22import { state as delayAppState } from '../../features/delayApp';
21export default class AppLayoutContainer extends Component { 23
24export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component {
22 static defaultProps = { 25 static defaultProps = {
23 children: null, 26 children: null,
24 }; 27 };
@@ -26,6 +29,7 @@ export default class AppLayoutContainer extends Component {
26 render() { 29 render() {
27 const { 30 const {
28 app, 31 app,
32 features,
29 services, 33 services,
30 ui, 34 ui,
31 news, 35 news,
@@ -39,7 +43,6 @@ export default class AppLayoutContainer extends Component {
39 handleIPCMessage, 43 handleIPCMessage,
40 setWebviewReference, 44 setWebviewReference,
41 openWindow, 45 openWindow,
42 reloadUpdatedServices,
43 reorder, 46 reorder,
44 reload, 47 reload,
45 toggleNotifications, 48 toggleNotifications,
@@ -64,10 +67,13 @@ export default class AppLayoutContainer extends Component {
64 67
65 const { children } = this.props; 68 const { children } = this.props;
66 69
70 const isLoadingFeatures = features.featuresRequest.isExecuting
71 && !features.featuresRequest.wasExecuted;
72
67 const isLoadingServices = services.allServicesRequest.isExecuting 73 const isLoadingServices = services.allServicesRequest.isExecuting
68 && services.allServicesRequest.isExecutingFirstTime; 74 && services.allServicesRequest.isExecutingFirstTime;
69 75
70 if (isLoadingServices) { 76 if (isLoadingFeatures || isLoadingServices) {
71 return ( 77 return (
72 <AppLoader /> 78 <AppLoader />
73 ); 79 );
@@ -105,25 +111,29 @@ export default class AppLayoutContainer extends Component {
105 ); 111 );
106 112
107 return ( 113 return (
108 <AppLayout 114 <ThemeProvider theme={ui.theme}>
109 isFullScreen={app.isFullScreen} 115 <AppLayout
110 isOnline={app.isOnline} 116 isFullScreen={app.isFullScreen}
111 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar} 117 isOnline={app.isOnline}
112 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED} 118 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar}
113 sidebar={sidebar} 119 appUpdateIsDownloaded={app.updateStatus === app.updateStatusTypes.DOWNLOADED}
114 services={servicesContainer} 120 sidebar={sidebar}
115 news={news.latest} 121 services={servicesContainer}
116 removeNewsItem={hide} 122 news={news.latest}
117 reloadServicesAfterUpdate={reloadUpdatedServices} 123 removeNewsItem={hide}
118 installAppUpdate={installUpdate} 124 reloadServicesAfterUpdate={() => window.location.reload()}
119 globalError={globalError.error} 125 installAppUpdate={installUpdate}
120 showRequiredRequestsError={requests.showRequiredRequestsError} 126 globalError={globalError.error}
121 areRequiredRequestsSuccessful={requests.areRequiredRequestsSuccessful} 127 showRequiredRequestsError={requests.showRequiredRequestsError}
122 retryRequiredRequests={retryRequiredRequests} 128 areRequiredRequestsSuccessful={requests.areRequiredRequestsSuccessful}
123 areRequiredRequestsLoading={requests.areRequiredRequestsLoading} 129 retryRequiredRequests={retryRequiredRequests}
124 > 130 areRequiredRequestsLoading={requests.areRequiredRequestsLoading}
125 {React.Children.count(children) > 0 ? children : null} 131 darkMode={settings.all.app.darkMode}
126 </AppLayout> 132 isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible}
133 >
134 {React.Children.count(children) > 0 ? children : null}
135 </AppLayout>
136 </ThemeProvider>
127 ); 137 );
128 } 138 }
129} 139}
@@ -131,6 +141,7 @@ export default class AppLayoutContainer extends Component {
131AppLayoutContainer.wrappedComponent.propTypes = { 141AppLayoutContainer.wrappedComponent.propTypes = {
132 stores: PropTypes.shape({ 142 stores: PropTypes.shape({
133 services: PropTypes.instanceOf(ServicesStore).isRequired, 143 services: PropTypes.instanceOf(ServicesStore).isRequired,
144 features: PropTypes.instanceOf(FeaturesStore).isRequired,
134 recipes: PropTypes.instanceOf(RecipesStore).isRequired, 145 recipes: PropTypes.instanceOf(RecipesStore).isRequired,
135 app: PropTypes.instanceOf(AppStore).isRequired, 146 app: PropTypes.instanceOf(AppStore).isRequired,
136 ui: PropTypes.instanceOf(UIStore).isRequired, 147 ui: PropTypes.instanceOf(UIStore).isRequired,