diff options
Diffstat (limited to 'src/containers/layout')
-rw-r--r-- | src/containers/layout/AppLayoutContainer.js | 57 |
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 @@ | |||
1 | import React, { Component } from 'react'; | 1 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | import { ThemeProvider } from 'react-jss'; | ||
4 | 5 | ||
5 | import AppStore from '../../stores/AppStore'; | 6 | import AppStore from '../../stores/AppStore'; |
6 | import RecipesStore from '../../stores/RecipesStore'; | 7 | import RecipesStore from '../../stores/RecipesStore'; |
7 | import ServicesStore from '../../stores/ServicesStore'; | 8 | import ServicesStore from '../../stores/ServicesStore'; |
9 | import FeaturesStore from '../../stores/FeaturesStore'; | ||
8 | import UIStore from '../../stores/UIStore'; | 10 | import UIStore from '../../stores/UIStore'; |
9 | import NewsStore from '../../stores/NewsStore'; | 11 | import NewsStore from '../../stores/NewsStore'; |
10 | import SettingsStore from '../../stores/SettingsStore'; | 12 | import SettingsStore from '../../stores/SettingsStore'; |
@@ -17,8 +19,9 @@ import Sidebar from '../../components/layout/Sidebar'; | |||
17 | import Services from '../../components/services/content/Services'; | 19 | import Services from '../../components/services/content/Services'; |
18 | import AppLoader from '../../components/ui/AppLoader'; | 20 | import AppLoader from '../../components/ui/AppLoader'; |
19 | 21 | ||
20 | @inject('stores', 'actions') @observer | 22 | import { state as delayAppState } from '../../features/delayApp'; |
21 | export default class AppLayoutContainer extends Component { | 23 | |
24 | export 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 { | |||
131 | AppLayoutContainer.wrappedComponent.propTypes = { | 141 | AppLayoutContainer.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, |