aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/layout
diff options
context:
space:
mode:
authorLibravatar Balaji Vijayakumar <kuttibalaji.v6@gmail.com>2022-10-25 10:27:51 +0530
committerLibravatar Vijay Aravamudhan <vraravam@users.noreply.github.com>2022-10-25 12:12:56 +0530
commit4906216e21c05f603647ff9a883e012a8aec60ca (patch)
tree386cba77e78febde26f4173d4f5d324046048af8 /src/components/layout
parent6.2.1-nightly.28 [skip ci] (diff)
downloadferdium-app-4906216e21c05f603647ff9a883e012a8aec60ca.tar.gz
ferdium-app-4906216e21c05f603647ff9a883e012a8aec60ca.tar.zst
ferdium-app-4906216e21c05f603647ff9a883e012a8aec60ca.zip
refactor: convert AppLayout to typescript
Diffstat (limited to 'src/components/layout')
-rw-r--r--src/components/layout/AppLayout.tsx (renamed from src/components/layout/AppLayout.jsx)53
1 files changed, 29 insertions, 24 deletions
diff --git a/src/components/layout/AppLayout.jsx b/src/components/layout/AppLayout.tsx
index 685839c0a..c2468e852 100644
--- a/src/components/layout/AppLayout.jsx
+++ b/src/components/layout/AppLayout.tsx
@@ -1,9 +1,8 @@
1import { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
4import { defineMessages, injectIntl } from 'react-intl'; 3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
5import { TitleBar } from 'electron-react-titlebar/renderer'; 4import { TitleBar } from 'electron-react-titlebar/renderer';
6import injectSheet from 'react-jss'; 5import injectSheet, { WithStylesProps } from 'react-jss';
7import { ipcRenderer } from 'electron'; 6import { ipcRenderer } from 'electron';
8 7
9import { mdiFlash, mdiPowerPlug } from '@mdi/js'; 8import { mdiFlash, mdiPowerPlug } from '@mdi/js';
@@ -16,8 +15,7 @@ import ErrorBoundary from '../util/ErrorBoundary';
16import { updateVersionParse } from '../../helpers/update-helpers'; 15import { updateVersionParse } from '../../helpers/update-helpers';
17 16
18// import globalMessages from '../../i18n/globalMessages'; 17// import globalMessages from '../../i18n/globalMessages';
19 18import { isMac, isWindows } from '../../environment';
20import { isWindows, isMac } from '../../environment';
21import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; 19import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator';
22import { workspaceStore } from '../../features/workspaces'; 20import { workspaceStore } from '../../features/workspaces';
23import AppUpdateInfoBar from '../AppUpdateInfoBar'; 21import AppUpdateInfoBar from '../AppUpdateInfoBar';
@@ -25,6 +23,7 @@ import Todos from '../../features/todos/containers/TodosScreen';
25import Icon from '../ui/icon'; 23import Icon from '../ui/icon';
26 24
27import LockedScreen from '../../containers/auth/LockedScreen'; 25import LockedScreen from '../../containers/auth/LockedScreen';
26import SettingsStore from '../../stores/SettingsStore';
28 27
29const messages = defineMessages({ 28const messages = defineMessages({
30 servicesUpdated: { 29 servicesUpdated: {
@@ -77,24 +76,30 @@ const toggleFullScreen = () => {
77 ipcRenderer.send('window.toolbar-double-clicked'); 76 ipcRenderer.send('window.toolbar-double-clicked');
78}; 77};
79 78
80class AppLayout extends Component { 79interface IProps extends WrappedComponentProps, WithStylesProps<typeof styles> {
81 static propTypes = { 80 settings: SettingsStore;
82 classes: PropTypes.object.isRequired, 81 updateVersion: string;
83 settings: PropTypes.object.isRequired, 82 isFullScreen: boolean;
84 isFullScreen: PropTypes.bool.isRequired, 83 sidebar: React.ReactElement;
85 sidebar: PropTypes.element.isRequired, 84 workspacesDrawer: React.ReactElement;
86 workspacesDrawer: PropTypes.element.isRequired, 85 services: React.ReactElement;
87 services: PropTypes.element.isRequired, 86 showServicesUpdatedInfoBar: boolean;
88 showServicesUpdatedInfoBar: PropTypes.bool.isRequired, 87 appUpdateIsDownloaded: boolean;
89 appUpdateIsDownloaded: PropTypes.bool.isRequired, 88 authRequestFailed: boolean;
90 authRequestFailed: PropTypes.bool.isRequired, 89 installAppUpdate: () => void;
91 installAppUpdate: PropTypes.func.isRequired, 90 showRequiredRequestsError: boolean;
92 showRequiredRequestsError: PropTypes.bool.isRequired, 91 areRequiredRequestsSuccessful: boolean;
93 areRequiredRequestsSuccessful: PropTypes.bool.isRequired, 92 retryRequiredRequests: () => void;
94 retryRequiredRequests: PropTypes.func.isRequired, 93 areRequiredRequestsLoading: boolean;
95 areRequiredRequestsLoading: PropTypes.bool.isRequired, 94}
96 }; 95
96interface IState {
97 shouldShowAppUpdateInfoBar: boolean;
98 shouldShowServicesUpdatedInfoBar: boolean;
99}
97 100
101@observer
102class AppLayout extends Component<IProps, IState> {
98 constructor(props) { 103 constructor(props) {
99 super(props); 104 super(props);
100 105
@@ -222,5 +227,5 @@ class AppLayout extends Component {
222} 227}
223 228
224export default injectIntl( 229export default injectIntl(
225 injectSheet(styles, { injectTheme: true })(observer(AppLayout)), 230 injectSheet(styles, { injectTheme: true })(AppLayout),
226); 231);