aboutsummaryrefslogtreecommitdiffstats
path: root/src/containers/layout
diff options
context:
space:
mode:
authorLibravatar Ricardo Cino <ricardo@cino.io>2022-06-27 18:21:31 +0200
committerLibravatar GitHub <noreply@github.com>2022-06-27 17:21:31 +0100
commit0bf13689d53bd493fb4d0a4213c1801013b5aa8a (patch)
tree2b5ae44e4f1aa73b49c011954ff1cb47e3959bad /src/containers/layout
parentchore: recommend specific vscode extensions to setup development [skip ci] (#... (diff)
downloadferdium-app-0bf13689d53bd493fb4d0a4213c1801013b5aa8a.tar.gz
ferdium-app-0bf13689d53bd493fb4d0a4213c1801013b5aa8a.tar.zst
ferdium-app-0bf13689d53bd493fb4d0a4213c1801013b5aa8a.zip
chore: transform containers/settings from js to tsx (#384)
Diffstat (limited to 'src/containers/layout')
-rw-r--r--src/containers/layout/AppLayoutContainer.tsx (renamed from src/containers/layout/AppLayoutContainer.js)65
1 files changed, 15 insertions, 50 deletions
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.tsx
index 1021ab4fa..c6a9dfb0d 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.tsx
@@ -1,34 +1,22 @@
1import { Children, Component } from 'react'; 1import { Children, Component, ReactElement, ReactNode } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
4import { ThemeProvider } from 'react-jss'; 3import { ThemeProvider } from 'react-jss';
5 4
6import AppStore from '../../stores/AppStore'; 5import { StoresProps } from 'src/@types/ferdium-components.types';
7import RecipesStore from '../../stores/RecipesStore';
8import ServicesStore from '../../stores/ServicesStore';
9import FeaturesStore from '../../stores/FeaturesStore';
10import UIStore from '../../stores/UIStore';
11import SettingsStore from '../../stores/SettingsStore';
12import UserStore from '../../stores/UserStore';
13import RequestStore from '../../stores/RequestStore';
14import GlobalErrorStore from '../../stores/GlobalErrorStore';
15
16import { oneOrManyChildElements } from '../../prop-types';
17import AppLayout from '../../components/layout/AppLayout'; 6import AppLayout from '../../components/layout/AppLayout';
18import Sidebar from '../../components/layout/Sidebar'; 7import Sidebar from '../../components/layout/Sidebar';
19import Services from '../../components/services/content/Services'; 8import Services from '../../components/services/content/Services';
20import AppLoader from '../../components/ui/AppLoader'; 9import AppLoader from '../../components/ui/AppLoader';
21 10
22import { workspaceActions } from '../../features/workspaces/actions';
23import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; 11import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer';
24import { workspaceStore } from '../../features/workspaces'; 12import { workspaceStore } from '../../features/workspaces';
25 13
26class AppLayoutContainer extends Component { 14interface AppLayoutContainerProps extends StoresProps {
27 static defaultProps = { 15 children: ReactNode;
28 children: null, 16}
29 };
30 17
31 render() { 18class AppLayoutContainer extends Component<AppLayoutContainerProps> {
19 render(): ReactElement {
32 const { 20 const {
33 app, 21 app,
34 features, 22 features,
@@ -38,7 +26,7 @@ class AppLayoutContainer extends Component {
38 globalError, 26 globalError,
39 requests, 27 requests,
40 user, 28 user,
41 router 29 router,
42 } = this.props.stores; 30 } = this.props.stores;
43 31
44 /* HOTFIX for: 32 /* HOTFIX for:
@@ -69,7 +57,8 @@ class AppLayoutContainer extends Component {
69 57
70 const { retryRequiredRequests } = this.props.actions.requests; 58 const { retryRequiredRequests } = this.props.actions.requests;
71 59
72 const { installUpdate, toggleMuteApp, toggleCollapseMenu } = this.props.actions.app; 60 const { installUpdate, toggleMuteApp, toggleCollapseMenu } =
61 this.props.actions.app;
73 62
74 const { openSettings, closeSettings } = this.props.actions.ui; 63 const { openSettings, closeSettings } = this.props.actions.ui;
75 64
@@ -85,14 +74,10 @@ class AppLayoutContainer extends Component {
85 74
86 const isLoadingSettings = !settings.loaded; 75 const isLoadingSettings = !settings.loaded;
87 76
88 if ( 77 if (isLoadingSettings || isLoadingFeatures || isLoadingServices) {
89 isLoadingSettings ||
90 isLoadingFeatures ||
91 isLoadingServices
92 ) {
93 return ( 78 return (
94 <ThemeProvider theme={ui.theme}> 79 <ThemeProvider theme={ui.theme}>
95 <AppLoader /> 80 <AppLoader theme={ui.theme} />
96 </ThemeProvider> 81 </ThemeProvider>
97 ); 82 );
98 } 83 }
@@ -127,7 +112,9 @@ class AppLayoutContainer extends Component {
127 wakeUpService={awake} 112 wakeUpService={awake}
128 toggleMuteApp={toggleMuteApp} 113 toggleMuteApp={toggleMuteApp}
129 toggleCollapseMenu={toggleCollapseMenu} 114 toggleCollapseMenu={toggleCollapseMenu}
130 toggleWorkspaceDrawer={workspaceActions.toggleWorkspaceDrawer} 115 toggleWorkspaceDrawer={
116 this.props.actions.workspaces.toggleWorkspaceDrawer
117 }
131 isWorkspaceDrawerOpen={workspaceStore.isWorkspaceDrawerOpen} 118 isWorkspaceDrawerOpen={workspaceStore.isWorkspaceDrawerOpen}
132 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar} 119 showServicesUpdatedInfoBar={ui.showServicesUpdatedInfoBar}
133 showMessageBadgeWhenMutedSetting={ 120 showMessageBadgeWhenMutedSetting={
@@ -182,26 +169,4 @@ class AppLayoutContainer extends Component {
182 } 169 }
183} 170}
184 171
185AppLayoutContainer.propTypes = {
186 stores: PropTypes.shape({
187 services: PropTypes.instanceOf(ServicesStore).isRequired,
188 features: PropTypes.instanceOf(FeaturesStore).isRequired,
189 recipes: PropTypes.instanceOf(RecipesStore).isRequired,
190 app: PropTypes.instanceOf(AppStore).isRequired,
191 ui: PropTypes.instanceOf(UIStore).isRequired,
192 settings: PropTypes.instanceOf(SettingsStore).isRequired,
193 user: PropTypes.instanceOf(UserStore).isRequired,
194 requests: PropTypes.instanceOf(RequestStore).isRequired,
195 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired,
196 }).isRequired,
197 actions: PropTypes.shape({
198 service: PropTypes.instanceOf(ServicesStore).isRequired,
199 ui: PropTypes.instanceOf(UIStore).isRequired,
200 app: PropTypes.instanceOf(AppStore).isRequired,
201 requests: PropTypes.instanceOf(RequestStore).isRequired,
202 }).isRequired,
203 // eslint-disable-next-line react/require-default-props
204 children: oneOrManyChildElements,
205};
206
207export default inject('stores', 'actions')(observer(AppLayoutContainer)); 172export default inject('stores', 'actions')(observer(AppLayoutContainer));